在從IOS8到IOS9的進級進程中,彈出提醒框的方法有了很年夜的轉變,在Xcode7 ,IOS9.0的SDK中,蘋果曾經明白提醒不再推舉應用UIAlertView,而推舉應用UIAlertController,如今,我們經由過程代碼來演示一下。
#import "LoginViewController.h" @interface LoginViewController () @property (weak, nonatomic) IBOutlet UITextField *passWord; @property (weak, nonatomic) IBOutlet UITextField *userName; @property (weak, nonatomic) IBOutlet UIButton *login; - (IBAction)loginOnClick:(UIButton *)sender; @end @implementation LoginViewController - (void)viewDidLoad { [super viewDidLoad]; //獲得告訴中間 NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; //注冊告訴 [center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.userName]; [center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.passWord]; } -(void)textChange { //當用戶名框和暗碼框同時有內容時,登錄按鈕才可以點擊 self.login.enabled = (self.userName.text.length > 0 && self.passWord.text.length > 0); } //點擊登錄按鈕履行的事宜 - (IBAction)loginOnClick:(UIButton *)sender { if ([self.userName.text isEqual: @"xiaojin"] && [self.passWord.text isEqual: @"123456"]) { NSLog(@"successful"); [self performSegueWithIdentifier:@"loginIdentifier" sender:nil]; } else { //iOS9之前常常用來創立提醒框的辦法 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提醒" message:@"用戶名或暗碼湧現毛病" delegate:self cancelButtonTitle:@"肯定" otherButtonTitles:nil, nil]; [alert show]; } } @end
編寫上述代碼時,會有以下的正告提醒:
解釋UIAlertView起首在iOS9中被棄用(不推舉)應用。讓我們去用UIAlertController。然則運轉法式,發明代碼照樣可以勝利運轉,不會湧現crash。當輸出用戶名或暗碼毛病時就會淡出提醒框,如圖:
然則在現實的工程開辟中,我們有如許一個“潛規矩”:要把每個正告(warning)當作毛病(error)。所認為了適應蘋果的潮水,我們來處理這個warning,應用UIAlertController來處理這個成績。代碼以下:
#import "LoginViewController.h" @interface LoginViewController () @property (weak, nonatomic) IBOutlet UITextField *passWord; @property (weak, nonatomic) IBOutlet UITextField *userName; @property (weak, nonatomic) IBOutlet UIButton *login; - (IBAction)loginOnClick:(UIButton *)sender; @end @implementation LoginViewController - (void)viewDidLoad { [super viewDidLoad]; //獲得告訴中間 NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; //注冊告訴 [center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.userName]; [center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.passWord]; } -(void)textChange { //當用戶名框和暗碼框同時有內容時,登錄按鈕才可以點擊 self.login.enabled = (self.userName.text.length > 0 && self.passWord.text.length > 0); } //點擊登錄按鈕履行的事宜 - (IBAction)loginOnClick:(UIButton *)sender { if ([self.userName.text isEqual: @"xiaojin"] && [self.passWord.text isEqual: @"123456"]) { NSLog(@"successful"); [self performSegueWithIdentifier:@"loginIdentifier" sender:nil]; } else { //初始化提醒框; UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提醒" message:@"用戶名或暗碼湧現毛病" preferredStyle: UIAlertControllerStyleAlert]; [alert addAction:[UIAlertAction actionWithTitle:@"肯定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { //點擊按鈕的呼應事宜; }]]; //彈出提醒框; [self presentViewController:alert animated:true completion:nil]; } } @end
看,如許就不會有正告了吧!編譯運轉後的界面和下面的一樣。個中preferredStyle這個參數還有另外一個選擇:UIAlertControllerStyleActionSheet。選擇這個列舉類型後,完成後果以下:
可以發明這個提醒框是從底部彈出的。是否是很簡略呢?經由過程檢查代碼還可以發明,在提醒框中的按鈕呼應不再須要delegate拜托來完成了。直接應用addAction便可以在一個block中完成按鈕點擊,異常便利。
總結,可以發明這裡我們出現一個對話框應用了presentViewController這個辦法,這個辦法是出現模態視圖(Modal View)的辦法,也就是是說,此時的提醒框是一個模態視圖。當我們在停止界面跳轉的時刻,也普通應用這個辦法,此時出現的第二個ViewController也是一個模態視圖。我們可以把模態視圖懂得為一個浮動在本來視圖上的一個暫時性的視圖或許界面,當在模態視圖中挪用dismissViewController辦法時,會前往上一個界面,並燒毀這個模態視圖對象。
以上就是本文的全體內容,願望能給年夜家一個參考,也願望年夜家多多支撐本站。
【iOS9提醒框的准確應用方法】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!