提示框(警告框)控件:UIAlertView

 
功能:当点击按钮或标签等时,弹出一个提示框,显示必要的提示,然后通过添加的按钮完成需要的功能。
 
类型:typedef NS_ENUM(NSInteger, UIAlertViewStyle) {

UIAlertViewStyleDefault = 0,                 //默认类型

UIAlertViewStyleSecureTextInput,          //安全密码的文本框输入类型

UIAlertViewStylePlainTextInput,            //普通文本框的文本框输入类型

UIAlertViewStyleLoginAndPasswordInput //登陆账号和密码输入类型

};

属性:

@property(nonatomic,assign) id <UIAlertViewDelegate> delegate;  //提示框代理
@property(nonatomic,copy) NSString *title;                              //提示框标题
@property(nonatomic,copy) NSString *message;                        // 提示信息
@property(nonatomic,readonly) NSInteger numberOfButtons;       // 提示框的按钮数量
@property(nonatomic) NSInteger cancelButtonIndex;                  // 提示框上被点击的按钮的索引
@property(nonatomic,readonly) NSInteger firstOtherButtonIndex; // 第一个其他按钮的索引 
@property(nonatomic,readonly,getter=isVisible) BOOL visible;      // 提示框是否可见
@property(nonatomic,assign) UIAlertViewStyle alertViewStyle ;    // 提示框类型
 
注意:如果按钮数量超出屏幕显示范围,则会创建类似tableView的效果。
对象方法:
 
 ※初始化提示框

- (instancetype)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id<UIAlertViewDelegate>)delegate cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, …);
 
※添加一个按钮,返回该按钮的索引值

- (NSInteger)addButtonWithTitle:(NSString *)title;

※返回指定索引值的提示框标题

- (NSString *)buttonTitleAtIndex:(NSInteger)buttonIndex;

※显示提示框

-(void)show;

※点击指定的按钮时提示框消失

- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated;

※设置输入文本框的索引,返回文本框

- (UITextField *)textFieldAtIndex:(NSInteger)textFieldIndex

协议:代理方法

protocol UIAlertViewDelegate <NSObject>

@optional

※点击提示框上的按钮时触发的方法

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;

※提示框将要消失时触发的方法

- (void)alertViewCancel:(UIAlertView *)alertView;

※提示框将要显示时触发的方法

- (void)willPresentAlertView:(UIAlertView *)alertView;

※已经显示提示框时触发的方法

- (void)didPresentAlertView:(UIAlertView *)alertView;

※提示框将要消失是触发的方法

- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex;

※提示框已经消失时触发的方法

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex;

※设置提示框的第一个按钮是否不是取消按钮

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView;

@end

具体的举例如下:

首先在视图控制器视图中创建按钮并添加事件,便于完成提示框的创建:

 - (void)viewDidLoad {
[super viewDidLoad]; //在视图中添加按钮事件
UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(, , , )]; [button setTitle:@"点击" forState:UIControlStateNormal]; [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; button.center = self.view.center; //第一种形式:提示框上添加一两个按钮的默认类型
//[button addTarget:self action:@selector(Clicked_1:) forControlEvents:UIControlEventTouchUpInside]; //第二种形式:提示框上添加多个按钮的默认类型
//[button addTarget:self action:@selector(Clicked_2:) forControlEvents:UIControlEventTouchUpInside]; //第三种形式:提示框的类型为普通文本框输入类型
//[button addTarget:self action:@selector(Clicked_3:) forControlEvents:UIControlEventTouchUpInside]; //第四种形式:提示框的类型为安全文本框输入类型
//[button addTarget:self action:@selector(Clicked_4:) forControlEvents:UIControlEventTouchUpInside]; //第五种形式:提示框的类型为登陆账号和密码文本框输入类型
[button addTarget:self action:@selector(Clicked_5:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button];
}

1、第一种形式:提示框上添加一两个按钮的默认类型

 #pragma mark -Clicked1  提示框上添加一两个按钮的默认类型
-(void)Clicked_1:(UIButton*)sender
{
//创建提示框对象
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提示信息" message:@"信息输入有误" delegate:self cancelButtonTitle:@"确认" otherButtonTitles:@"取消", nil]; //显示提示框
[alertView show];
}

演示结果:

2、第二种形式:提示框上添加多个按钮的默认类型

 #pragma mark -Clicked2  提示框上添加多个按钮的默认类型
-(void)Clicked_2:(UIButton*)sender
{
//创建提示框对象
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提示信息" message:@"多个按钮" delegate:self cancelButtonTitle:@"button1" otherButtonTitles:@"button2", nil]; //继续添加按钮
[alertView addButtonWithTitle:@"button3"];
[alertView addButtonWithTitle:@"button4"];
[alertView addButtonWithTitle:@"button5"];
[alertView addButtonWithTitle:@"button6"];
[alertView addButtonWithTitle:@"button7"]; //显示提示框
[alertView show];
}

演示结果:

3、第三种形式:提示框的类型为普通文本框输入类型

 #pragma mark -Clicked_3  提示框的类型为普通文本框输入类型
-(void)Clicked_3:(UIButton*)sender
{
//创建提示框对象
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提示信息" message:@"请输入信息" delegate:self cancelButtonTitle:@"确认" otherButtonTitles:@"取消", nil]; alertView.alertViewStyle = UIAlertViewStylePlainTextInput; //显示提示框
[alertView show];
}

演示结果:

4、第四种形式:提示框的类型为安全文本框输入类型

 #pragma mark -Clicked_4  提示框的类型为安全文本框输入类型
-(void)Clicked_4:(UIButton*)sender
{
//创建提示框对象
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提示信息" message:@"请输入信息" delegate:self cancelButtonTitle:@"确认" otherButtonTitles:@"取消", nil]; alertView.alertViewStyle = UIAlertViewStyleSecureTextInput; //显示提示框
[alertView show];
}

演示结果:

5、第五种形式:提示框的类型为登陆账号和密码文本框输入类型

 #pragma mark -Clicked_5  提示框的类型为登陆账号和密码文本框输入类型
-(void)Clicked_5:(UIButton*)sender
{
//创建提示框对象
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提示信息" message:@"请输入账号和密码" delegate:self cancelButtonTitle:@"确认" otherButtonTitles:@"取消", nil]; alertView.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput; //显示提示框
[alertView show];
}

演示结果:

协议代理的方法的使用:

1、首先实现协议:@interface ViewController ()<UIAlertViewDelegate>

2、其次设置代理,以上面的第一种形式提示框举例:

 #pragma mark -Clicked1  提示框上添加一两个按钮的默认类型
-(void)Clicked_1:(UIButton*)sender
{
//创建提示框对象
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提示信息" message:@"信息输入有误" delegate:self cancelButtonTitle:@"确认" otherButtonTitles:@"取消", nil]; alertView.delegate = self; //设置代理 //显示提示框
[alertView show];
}

3、实现协议的方法:

 #pragma mark -<UIAlertViewDelegate>
//※点击提示框上的按钮时触发的方法
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSLog(@"alertView:clickedButtonAtIndex:");
} //※提示框将要消失时触发的方法
- (void)alertViewCancel:(UIAlertView *)alertView
{
NSLog(@"alertViewCancel:");
} //※提示框将要显示时触发的方法
- (void)willPresentAlertView:(UIAlertView *)alertView
{
NSLog(@"willPresentAlertView:");
} //※已经显示提示框时触发的方法
- (void)didPresentAlertView:(UIAlertView *)alertView
{
NSLog(@"didPresentAlertView:");
} //※提示框将要消失是触发的方法
- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex
{
NSLog(@"alertView: willDismissWithButtonIndex:");
} //※提示框已经消失时触发的方法
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
NSLog(@"alertView: didDismissWithButtonIndex:");
} //※设置提示框的第一个按钮是否不是取消按钮
- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
{
NSLog(@"NO");
return NO;
}

刚开始时View中的按钮截图:

点击"点击"按钮时,截图中其他第一个按钮被设置为不是取消按钮(按钮无效)和代理方法执行顺序结果:

-- ::30.239 提示框(警告框)UIAlertView[:] willPresentAlertView:
-- ::30.240 提示框(警告框)UIAlertView[:] NO
-- ::30.763 提示框(警告框)UIAlertView[:] didPresentAlertView:

点击"确认"时,剩下的代理方法执行顺序的结果:

-- ::27.366 提示框(警告框)UIAlertView[:] alertView:clickedButtonAtIndex:
-- ::27.367 提示框(警告框)UIAlertView[:] alertView: willDismissWithButtonIndex:
-- ::27.777 提示框(警告框)UIAlertView[:] alertView: didDismissWithButtonIndex:

总的执行结果为:

-- ::30.239 提示框(警告框)UIAlertView[:] willPresentAlertView:
-- ::30.240 提示框(警告框)UIAlertView[:] NO
-- ::30.763 提示框(警告框)UIAlertView[:] didPresentAlertView:
-- ::27.366 提示框(警告框)UIAlertView[:] alertView:clickedButtonAtIndex:
-- ::27.367 提示框(警告框)UIAlertView[:] alertView: willDismissWithButtonIndex:
-- ::27.777 提示框(警告框)UIAlertView[:] alertView: didDismissWithButtonIndex:

iOS:提示框(警告框)控件UIAlertView的详解的更多相关文章

  1. 《手把手教你》系列技巧篇(三十八)-java+ selenium自动化测试-日历时间控件-下篇(详解教程)

    1.简介 理想很丰满现实很骨感,在应用selenium实现web自动化时,经常会遇到处理日期控件点击问题,手工很简单,可以一个个点击日期控件选择需要的日期,但自动化执行过程中,完全复制手工这样的操作就 ...

  2. iOS:提示框(警告框)控件UIActionSheet的详解

    提示框(警告框)控件2:UIActionSheet 功能:当点击按钮或标签等时,弹出一个提示框,显示必要的提示,然后通过添加的按钮完成需要的功能.它与导航栏类似,它继承自UIView.   风格类型: ...

  3. iOS:网页视图控件UIWebView的详解

    网页视图控件:UIWebView 功能:它是继承于UIView的,是一个内置的浏览器控件,以用来浏览从网络下载下来的网页或者本地上加载下来的文档. 枚举: //网页视图导航类型 typedef NS_ ...

  4. iOS:选择器控件UIPickerView的详解和演示

    选择器控件UIPickerView: 功能:它能够创建一个类似于密码锁式的单列或多列的选择菜单,用户可以通过它设置的代理来选择需要菜单中的任意的数据.例如创建日历.字体表(类型.大小.颜色).图库等. ...

  5. iOS:下拉刷新控件UIRefreshControl的详解

    下拉刷新控件:UIRefreshControl 1.具体类信息: @interface UIRefreshControl : UIControl //继承控制类 - (instancetype)ini ...

  6. iOS:图像选取器控制器控件UIImagePickerController的详解

    图像选择控制器:UIImagePickerController 功能:用于选取相册或相机等里面的照片. @interface UIImagePickerController : UINavigatio ...

  7. delphi控件属性大全-详解-简介

    http://blog.csdn.net/u011096030/article/details/18716713 button 组件: CAPTION 属性 :用于在按钮上显示文本内容 Cancel ...

  8. 【VB技巧】VB ListView 控件功能使用详解

    来源:http://lcx.cc/?i=494 ListView控件 在工具箱上击鼠标右键,选择快捷菜单的Components(部件)项,在控件列表中选择Microsoft Windows Commo ...

  9. 转 VB ListView控件各种操作详解

    Private Sub Form_Load() ListView1.ListItems.Clear '清空列表 ListView1.ColumnHeaders.Clear '清空列表头 ListVie ...

随机推荐

  1. js实现动态数字时钟

    1.效果如下 2.html部分 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  2. SGU 205. Quantization Problem

    205. Quantization Problem time limit per test: 0.25 sec. memory limit per test: 65536 KB input: stan ...

  3. DotNetOpenAuth实践之Windows签名制作

    系列目录: DotNetOpenAuth实践系列(源码在这里) 在上篇中我们搭建了一个简单的认证服务器,里面使用到了Windows签名证书,这一篇则是教大家如何制作Windows签名证书,下面进入正题 ...

  4. es6的set和get实现数据双向绑定,监听变量变化。

    直接上代码吧,这个用法真的是效仿了.net的枚举. vue的数据双向绑定就是用这个实现的. 代码: html: <input type="text" id="inp ...

  5. php、mysql编译配置

    与apache一起使用: Configure Command =>  './configure'  '--prefix=/home/sujunjie/local/php' '--with-apx ...

  6. maven的认识

    >>>>>>>>>> 安装完成后,设置为环境变量 命令行输入,如下图片就表明成功 >>>>>>>& ...

  7. 常用排序算法的Python实现

    冒泡排序 算法思想: 对于一组需要排序的数据,对于相邻的两个数进行比较,使较大(或者较小)的数一直向后推,经过多层排序之后,使整个序列是有序的. 算法实现: def bubble_sort(L): l ...

  8. 主席树+dfs SPOJ BZOJ2588 Count on a tree

    这道题我由于智障错误导致一直错. 在树上建主席树,加上lca思想,很简单. #include<bits/stdc++.h> using namespace std; ; struct no ...

  9. SpringBoot 整合 WebSocket

    SpringBoot 整合 WebSocket(topic广播) 1.什么是WebSocket WebSocket为游览器和服务器提供了双工异步通信的功能,即游览器可以向服务器发送消息,服务器也可以向 ...

  10. [转]Android开发过程中遇到的问题

    例1: ‘Can't bind to local 8700 for debugger’报错和解决     1.CTS测试出现,运行startcts后,‘Can't bind to local 8700 ...