服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - iOS中UIAlertView警告框组件的使用教程

iOS中UIAlertView警告框组件的使用教程

2021-01-19 15:34珲少 IOS

需要注意的是在IOS8之后,UIAlertView和UIActionSheet这两个控件被UIAlertController代替,但是这两个控件依然可以使,下面我们就简单了解一下iOS中UIAlertView警告框组件的使用教程

1. 最简单的用法
初始化方法:

复制代码 代码如下:

- (instancetype)initwithtitle:(nsstring *)title message:(nsstring *)message delegate:(id /*<uialertviewdelegate>*/)delegate cancelbuttontitle:(nsstring *)cancelbuttontitle otherbuttontitles:(nsstring *)otherbuttontitles, ...;


这个方法通过设置一个标题,内容,代理和一些按钮的标题创建警告框,代码示例如下:
    uialertview * alert = [[uialertview alloc]initwithtitle:@"我的警告框" message:@"这是一个警告框" delegate:self cancelbuttontitle:@"取消" otherbuttontitles:@"确定", nil];
    [alert show];
效果如下:

 

iOS中UIAlertView警告框组件的使用教程

注意:如果按钮数超过两个,将会创建成如下样子:

iOS中UIAlertView警告框组件的使用教程

如果按钮数量超出屏幕显示范围,则会创建类似tableview的效果。

2. 为uialertview添加多个按钮

复制代码 代码如下:


uialertview*alert = [[uialertview alloc]initwithtitle:@"提示"

 

                                                  message:@"请选择一个按钮:"

                                                  delegate:nil  

                                                  cancelbuttontitle:@"取消"

                                                  otherbuttontitles:@"按钮一", @"按钮二", @"按钮三",nil]; 

[alert show]; 

[alert release];

 

3. 如何判断用户点击的按钮
uialertview有一个委托(代理)uialertviewdelegate ,继承该委托来实现点击事件

 头文件:

复制代码 代码如下:


@interface myalertviewviewcontroller : uiviewcontroller {

 

}

(void)alertview:(uialertview *)alertview clickedbuttonatindex:(nsinteger)buttonindex;
-(ibaction) buttonpressed;

@end


源文件:

复制代码 代码如下:


-(ibaction) buttonpressed

 

{

uialertview*alert = [[uialertview alloc]initwithtitle:@"提示"

                                                 message:@"请选择一个按钮:"

                                                 delegate:self  

                                                 cancelbuttontitle:@"取消"

                                                 otherbuttontitles:@"按钮一", @"按钮二", @"按钮三",nil]; 

[alert show]; 

[alert release];

}

(void)alertview:(uialertview *)alertview clickedbuttonatindex:(nsinteger)buttonindex
{

nsstring* msg = [[nsstring alloc] initwithformat:@"您按下的第%d个按钮!",buttonindex];

uialertview* alert = [[uialertview alloc]initwithtitle:@"提示"

                                                 message:msg

                                                 delegate:nil

                                                 cancelbuttontitle:@"确定"

                                                 otherbuttontitles:nil];

[alert show];

[alert release];

[msg release];

}


点击“取消”,“按钮一”,“按钮二”,“按钮三”的索引buttonindex分别是0,1,2,3

 

4. 手动的取消对话框

复制代码 代码如下:

[alertdismisswithclickedbuttonindex:0 animated:yes];

 

5. 为uialertview添加子视图
在为uialertview对象太添加子视图的过程中,有点是需要注意的地方,如果删除按钮,也就是取消uialerview视图中所有的按钮的时候,可能会导致整个显示结构失衡。按钮占用的空间不会消失,我们也可以理解为这些按钮没有真正的删除,仅仅是他不可见了而已。如果在uialertview对象中仅仅用来显示文本,那么,可以在消息的开头添加换行符(@"\n)有助于平衡按钮底部和顶部的空间。

下面的代码用来演示如何为uialertview对象添加子视图的方法。

复制代码 代码如下:


uialertview*alert = [[uialertview alloc]initwithtitle:@"请等待"

 

                                                 message:nil

                                                 delegate:nil  

                                                 cancelbuttontitle:nil

                                                 otherbuttontitles:nil]; 

[alert show];

uiactivityindicatorview*activeview = [[uiactivityindicatorview alloc]initwithactivityindicatorstyle:uiactivityindicatorviewstylewhitelarge];

activeview.center = cgpointmake(alert.bounds.size.width/2.0f, alert.bounds.size.height-40.0f); 

[activeview startanimating]; 

[alert addsubview:activeview]; 

[activeview release]; 

[alert release]; 

 

6. 其他 
uialertview默认情况下所有的text是居中对齐的。 那如果需要将文本向左对齐或者添加其他控件比如输入框时该怎么办呢? 不用担心, iphone sdk还是很灵活的, 有很多delegate消息供调用程序使用。 所要做的就是在

复制代码 代码如下:

(void)willpresentalertview:(uialertview *)alertview


中按照自己的需要修改或添加即可, 比如需要将消息文本左对齐,下面的代码即可实现:

复制代码 代码如下:


-(void) willpresentalertview:(uialertview *)alertview

 

{

      for( uiview * view in alertview.subviews )

      {

            if( [view iskindofclass:[uilabel class]] )

            {

                  uilabel* label = (uilabel*) view;

                  label.textalignment=uitextalignmentleft;

            }

      }

}


 这段代码很简单, 就是在消息框即将弹出时,遍历所有消息框对象,将其文本对齐属性修改为 uitextalignmentleft即可。

 

添加其他部件也如出一辙, 如下代码添加两个uitextfield:

复制代码 代码如下:


-(void) willpresentalertview:(uialertview *)alertview

 

{

      cgrect frame = alertview.frame;

      frame.origin.y -= 120;

      frame.size.height += 80;

      alertview.frame = frame;

      for( uiview * viewin alertview.subviews )

      {

            if( ![viewiskindofclass:[uilabelclass]] )

            {

                  cgrect btnframe = view.frame;

                  btnframe.origin.y += 70;

                  view.frame = btnframe;

            }

}

uitextfield* accoutname = [[uitextfieldalloc] init];

uitextfield* accoutpassword = [[uitextfieldalloc] init];

accoutname.frame = cgrectmake( 10, frame.origin.y + 40,frame.size.width - 20, 30 );

accoutpassword.frame = cgrectmake( 10, frame.origin.y + 80,frame.size.width -20, 30 );

accoutname.placeholder = @"请输入账号";

accoutpassword.placeholder = @"请输入密码";

accoutpassword.securetextentry = yes;

[alertview addsubview:accoutpassword];

[alertview addsubview:accoutname];

[accoutname release];

[accoutpassword release];

}


显示将消息框固有的button和label移位, 不然添加的text field会将其遮盖住。 然后添加需要的部件到相应的位置即可。

 

对于uiactionsheet其实也是一样的, 在

复制代码 代码如下:

(void)willpresentactionsheet:(uiactionsheet *)actionsheet


中做同样的处理一样可以得到自己想要的界面。

延伸 · 阅读

精彩推荐
  • IOSiOS中tableview 两级cell的展开与收回的示例代码

    iOS中tableview 两级cell的展开与收回的示例代码

    本篇文章主要介绍了iOS中tableview 两级cell的展开与收回的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    J_Kang3862021-04-22
  • IOSIOS开发之字典转字符串的实例详解

    IOS开发之字典转字符串的实例详解

    这篇文章主要介绍了IOS开发之字典转字符串的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这样的方法,需要的朋友可以参考下...

    苦练内功5832021-04-01
  • IOS解析iOS开发中的FirstResponder第一响应对象

    解析iOS开发中的FirstResponder第一响应对象

    这篇文章主要介绍了解析iOS开发中的FirstResponder第一响应对象,包括View的FirstResponder的释放问题,需要的朋友可以参考下...

    一片枫叶4662020-12-25
  • IOSiOS通过逆向理解Block的内存模型

    iOS通过逆向理解Block的内存模型

    自从对 iOS 的逆向初窥门径后,我也经常通过它来分析一些比较大的应用,参考一下这些应用中某些功能的实现。这个探索的过程乐趣多多,不仅能满足自...

    Swiftyper12832021-03-03
  • IOSiOS 雷达效果实例详解

    iOS 雷达效果实例详解

    这篇文章主要介绍了iOS 雷达效果实例详解的相关资料,需要的朋友可以参考下...

    SimpleWorld11022021-01-28
  • IOS关于iOS自适应cell行高的那些事儿

    关于iOS自适应cell行高的那些事儿

    这篇文章主要给大家介绍了关于iOS自适应cell行高的那些事儿,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    daisy6092021-05-17
  • IOSIOS 屏幕适配方案实现缩放window的示例代码

    IOS 屏幕适配方案实现缩放window的示例代码

    这篇文章主要介绍了IOS 屏幕适配方案实现缩放window的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    xiari5772021-06-01
  • IOSiOS布局渲染之UIView方法的调用时机详解

    iOS布局渲染之UIView方法的调用时机详解

    在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题,下面这篇文章主要给大家介绍了关于iOS布局渲染之UIView方法调用时机的相关资料...

    windtersharp7642021-05-04