提示框(警告框)控制元件:UIAlertView
UIAlertViewStyleDefault = 0, //預設型別
UIAlertViewStyleSecureTextInput, //安全密碼的文字框輸入型別
UIAlertViewStylePlainTextInput, //普通文字框的文字框輸入型別
UIAlertViewStyleLoginAndPasswordInput //登陸賬號和密碼輸入型別
};
屬性:
@property(nonatomic,copy) NSString *message; // 提示資訊
@property(nonatomic,readonly) NSInteger numberOfButtons; // 提示框的按鈕數量
物件方法:
- (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
具體的舉例如下:
首先在檢視控制器檢視中建立按鈕並新增事件,便於完成提示框的建立:
1 - (void)viewDidLoad { 2 [super viewDidLoad]; 3 4 5 //在檢視中新增按鈕事件 6 UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 100, 100)]; 7 8 [button setTitle:@"點選" forState:UIControlStateNormal]; 9 10 [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; 11 12 button.center = self.view.center; 13 14 //第一種形式:提示框上新增一兩個按鈕的預設型別 15 //[button addTarget:self action:@selector(Clicked_1:) forControlEvents:UIControlEventTouchUpInside]; 16 17 //第二種形式:提示框上新增多個按鈕的預設型別 18 //[button addTarget:self action:@selector(Clicked_2:) forControlEvents:UIControlEventTouchUpInside]; 19 20 //第三種形式:提示框的型別為普通文字框輸入型別 21 //[button addTarget:self action:@selector(Clicked_3:) forControlEvents:UIControlEventTouchUpInside]; 22 23 //第四種形式:提示框的型別為安全文字框輸入型別 24 //[button addTarget:self action:@selector(Clicked_4:) forControlEvents:UIControlEventTouchUpInside]; 25 26 //第五種形式:提示框的型別為登陸賬號和密碼文字框輸入型別 27 [button addTarget:self action:@selector(Clicked_5:) forControlEvents:UIControlEventTouchUpInside]; 28 29 [self.view addSubview:button]; 30 }
1、第一種形式:提示框上新增一兩個按鈕的預設型別
1 #pragma mark -Clicked1 提示框上新增一兩個按鈕的預設型別 2 -(void)Clicked_1:(UIButton*)sender 3 { 4 //建立提示框物件 5 UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提示資訊" message:@"資訊輸入有誤" delegate:self cancelButtonTitle:@"確認" otherButtonTitles:@"取消", nil]; 6 7 //顯示提示框 8 [alertView show]; 9 }
演示結果:
2、第二種形式:提示框上新增多個按鈕的預設型別
1 #pragma mark -Clicked2 提示框上新增多個按鈕的預設型別 2 -(void)Clicked_2:(UIButton*)sender 3 { 4 //建立提示框物件 5 UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提示資訊" message:@"多個按鈕" delegate:self cancelButtonTitle:@"button1" otherButtonTitles:@"button2", nil]; 6 7 //繼續新增按鈕 8 [alertView addButtonWithTitle:@"button3"]; 9 [alertView addButtonWithTitle:@"button4"]; 10 [alertView addButtonWithTitle:@"button5"]; 11 [alertView addButtonWithTitle:@"button6"]; 12 [alertView addButtonWithTitle:@"button7"]; 13 14 //顯示提示框 15 [alertView show]; 16 }
演示結果:
3、第三種形式:提示框的型別為普通文字框輸入型別
1 #pragma mark -Clicked_3 提示框的型別為普通文字框輸入型別 2 -(void)Clicked_3:(UIButton*)sender 3 { 4 //建立提示框物件 5 UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提示資訊" message:@"請輸入資訊" delegate:self cancelButtonTitle:@"確認" otherButtonTitles:@"取消", nil]; 6 7 alertView.alertViewStyle = UIAlertViewStylePlainTextInput; 8 9 //顯示提示框 10 [alertView show]; 11 }
演示結果:
4、第四種形式:提示框的型別為安全文字框輸入型別
1 #pragma mark -Clicked_4 提示框的型別為安全文字框輸入型別 2 -(void)Clicked_4:(UIButton*)sender 3 { 4 //建立提示框物件 5 UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提示資訊" message:@"請輸入資訊" delegate:self cancelButtonTitle:@"確認" otherButtonTitles:@"取消", nil]; 6 7 alertView.alertViewStyle = UIAlertViewStyleSecureTextInput; 8 9 //顯示提示框 10 [alertView show]; 11 }
演示結果:
5、第五種形式:提示框的型別為登陸賬號和密碼文字框輸入型別
1 #pragma mark -Clicked_5 提示框的型別為登陸賬號和密碼文字框輸入型別 2 -(void)Clicked_5:(UIButton*)sender 3 { 4 //建立提示框物件 5 UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提示資訊" message:@"請輸入賬號和密碼" delegate:self cancelButtonTitle:@"確認" otherButtonTitles:@"取消", nil]; 6 7 alertView.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput; 8 9 //顯示提示框 10 [alertView show]; 11 }
演示結果:
協議代理的方法的使用:
1、首先實現協議:@interface ViewController ()<UIAlertViewDelegate>
2、其次設定代理,以上面的第一種形式提示框舉例:
1 #pragma mark -Clicked1 提示框上新增一兩個按鈕的預設型別 2 -(void)Clicked_1:(UIButton*)sender 3 { 4 //建立提示框物件 5 UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提示資訊" message:@"資訊輸入有誤" delegate:self cancelButtonTitle:@"確認" otherButtonTitles:@"取消", nil]; 6 7 alertView.delegate = self; //設定代理 8 9 //顯示提示框 10 [alertView show]; 11 }
3、實現協議的方法:
1 #pragma mark -<UIAlertViewDelegate> 2 //※點選提示框上的按鈕時觸發的方法 3 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 4 { 5 NSLog(@"alertView:clickedButtonAtIndex:"); 6 } 7 8 //※提示框將要消失時觸發的方法 9 - (void)alertViewCancel:(UIAlertView *)alertView 10 { 11 NSLog(@"alertViewCancel:"); 12 } 13 14 //※提示框將要顯示時觸發的方法 15 - (void)willPresentAlertView:(UIAlertView *)alertView 16 { 17 NSLog(@"willPresentAlertView:"); 18 } 19 20 //※已經顯示提示框時觸發的方法 21 - (void)didPresentAlertView:(UIAlertView *)alertView 22 { 23 NSLog(@"didPresentAlertView:"); 24 } 25 26 //※提示框將要消失是觸發的方法 27 - (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex 28 { 29 NSLog(@"alertView: willDismissWithButtonIndex:"); 30 } 31 32 //※提示框已經消失時觸發的方法 33 - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 34 { 35 NSLog(@"alertView: didDismissWithButtonIndex:"); 36 } 37 38 //※設定提示框的第一個按鈕是否不是取消按鈕 39 - (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView 40 { 41 NSLog(@"NO"); 42 return NO; 43 }
剛開始時View中的按鈕截圖:
點選"點選"按鈕時,截圖中其他第一個按鈕被設定為不是取消按鈕(按鈕無效)和代理方法執行順序結果:
2015-09-28 23:41:30.239 提示框(警告框)UIAlertView[4383:427330] willPresentAlertView: 2015-09-28 23:41:30.240 提示框(警告框)UIAlertView[4383:427330] NO 2015-09-28 23:41:30.763 提示框(警告框)UIAlertView[4383:427330] didPresentAlertView:
點選"確認"時,剩下的代理方法執行順序的結果:
2015-09-28 23:48:27.366 提示框(警告框)UIAlertView[4383:427330] alertView:clickedButtonAtIndex: 2015-09-28 23:48:27.367 提示框(警告框)UIAlertView[4383:427330] alertView: willDismissWithButtonIndex: 2015-09-28 23:48:27.777 提示框(警告框)UIAlertView[4383:427330] alertView: didDismissWithButtonIndex:
總的執行結果為:
2015-09-28 23:41:30.239 提示框(警告框)UIAlertView[4383:427330] willPresentAlertView: 2015-09-28 23:41:30.240 提示框(警告框)UIAlertView[4383:427330] NO 2015-09-28 23:41:30.763 提示框(警告框)UIAlertView[4383:427330] didPresentAlertView: 2015-09-28 23:48:27.366 提示框(警告框)UIAlertView[4383:427330] alertView:clickedButtonAtIndex: 2015-09-28 23:48:27.367 提示框(警告框)UIAlertView[4383:427330] alertView: willDismissWithButtonIndex: 2015-09-28 23:48:27.777 提示框(警告框)UIAlertView[4383:427330] alertView: didDismissWithButtonIndex: