UIAlertController UIAlertAction (UIAlertView, UIActionSheet)(最好)

转载 2015年11月17日 22:18:15

 **

 *  UIAlertController & UIAlertAction

 *  1. iOS8中,我们失去了两个非常简单的控件,那就是UIAlertViewUIActionSheet,取而代之的是UIAlertControllerUIAlertAction

 *  2. iOS8中,UIAlertController控件使用两种样式代理题UIAlertViewUIActionSheet

 *  3. 意想不到的事情是UIAlertController的父类是UIViewController,所以要想显示出来不再是之前的show方法,而是使用推出模态视图的方式推出

 *  4. UIAlertController中,并没有按钮的添加,有的是TitleMessage这样的信息显示,而按钮,则是放在UIAlertAction类中了

 *  5. 如果我们想要添加一个按钮,通过创建UIAlertAction对象进行添加,按钮的事件也不再使用代理方法,而是通过Block的方式,我们可以添加多个按钮

 *  6. 除此之外,UIAlertController也可以添加UITextFieldUITextField的设置放在了Block内部,我们可以通过数组alertController.textFields来获取添加的输入框中的值,同样,输入框我们可以添加多个

 *  !!!7. !!!注意:输入框的添加只能在alertView样式下添加,如果是在actionSheet方式下添加,会造成运行时错误,所以在添加输入框前最好添加判断

 */



// 看下效果图

UIAlertController <wbr>UIAlertAction <wbr>(UIAlertView, <wbr>UIActionSheet)

UIAlertController <wbr>UIAlertAction <wbr>(UIAlertView, <wbr>UIActionSheet)



// 主要代码

#pragma mark 分段控制器事件

- (IBAction)segmentedControlAction:(UISegmentedControl *)sender

{

    

    // 1. 创建UIAlertControl变量,但并不穿GIAn

    UIAlertController *alertController = nil;

    

    

    // 2. 根据点击的item创建不同样式的alertController

    switch (sender.selectedSegmentIndex) {

        case 0: { // 弹出AlertView

            alertController = [UIAlertController alertControllerWithTitle:@"Title" message:@"Message" preferredStyle:UIAlertControllerStyleAlert];

            break;

        }

        case 1: { // 弹出ActionSheet

            alertController = [UIAlertController alertControllerWithTitle:@"Title" message:@"Message" preferredStyle:UIAlertControllerStyleActionSheet];

            break;

        }

        default:

            break;

    }

    

    

    // 3. 添加取消按钮

    // 3.1 UIAlertAction 表示一个按钮,同时,这个按钮带有处理事件的block

    UIAlertAction *action = [UIAlertAction actionWithTitle:@"取消"style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {

        NSLog(@"取消");

    }];

    // 3.2 添加到alertController

    [alertController addAction:action];

    

    

    // 4. 添加需要谨慎操作的按钮,文字默认是红色的

    [alertController addAction:({

        UIAlertAction *action = [UIAlertAction actionWithTitle:@"谨慎操作的按钮" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {

            NSLog(@"谨慎操作的按钮");

        }];

        action;

    })];

    

    

    // 5. 添加确定按钮

    [alertController addAction:({

        UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定"style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {

            NSLog(@"确定");

            

            // 打印输入框的用户名和密码

            NSString *userNameStr = [alertController.textFields[0text];

            NSString *passwordStr = [alertController.textFields[1text];

            NSLog(@"userName is: %@  password is: %@", userNameStr, passwordStr);

        }];

        action;

    })];

    

    

    // 6. 添加输入框到alertView中,注意,actionSheet是没有办法添加textField的,强行添加会Crash

    if (alertController.preferredStyle == UIAlertControllerStyleAlert) {

        // 添加用户名输入框

        [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {

            // 给输入框设置一些信息

            textField.placeholder = @"请输入用户名";

            textField.textAlignment = NSTextAlignmentCenter;

        }];

        // 添加密码输入框

        [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {

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

            textField.secureTextEntry = YES;

            textField.textAlignment = NSTextAlignmentCenter;

        }];

    }

    

    

    // 7. 显示(使用模态视图推出)

    [self presentViewController:alertController animated:YEScompletion:nil];

}


Swift - 自定义UIAlertController的样式1(修改标题、按钮的字体和颜色)

自 iOS8 起,苹果把 UIActionSheet 和 UIAlertView 合并为了 UIAlertController。UIAlertController 的用法我之前也写过相关文章:Swif...
  • mo_xiao_mo
  • mo_xiao_mo
  • 2017年04月21日 09:21
  • 1937

UIAlertController使用方法、UIAlertAction使用方法(8.0起新控件)

UIAlertController的集成关系: UIAlertController:UIViewController:UIResponder:NSObject
  • lover0920
  • lover0920
  • 2015年12月22日 11:18
  • 1357

实现对UIAlertController和UIAlertView判断系统后的简单封装

iOS8之后用UIAlertController代替了UIAlertView,所以每次有需要弹窗的时候,都需要先判断系统,最近在做的项目中弹窗较多,如果每次都判断,真是太麻烦了,索性对UIAlertC...
  • July_sal
  • July_sal
  • 2014年12月18日 15:30
  • 2824

iOS8 UIAlertController 创建UIAlertView以及UIActionSheet

最近发现在iOS8中UIActionSheet已经不支持了,所以研究了一下UIAlertController 如果有不对的地方,希望大家多多指教,不废话了,直接上代码。。。方法 + (instan...
  • u012661893
  • u012661893
  • 2015年02月12日 17:31
  • 506

iOS8 UIAlertView 和 UIActionSheet 的新用法 UIAlertController详解

添加了新的类 UIAlertController 和 UIAlertAction 来取代曾经的 UIAlertView 和 UIActionSheet,感觉警告窗口的结构更容易理解了,使用起来也更简便...
  • sharmir
  • sharmir
  • 2016年07月30日 11:29
  • 213

iOS8中提示框的使用UIAlertController(UIAlertView和UIActionSheet二合一)

iOS8推出了几个新的“controller”,主要是把类似之前的UIAlertView变成了UIAlertController,这不经意的改变,貌似把我之前理解的“controller”一下子推翻了...
  • lengshengren
  • lengshengren
  • 2014年10月08日 17:17
  • 46234

iOS8中提示框的使用UIAlertController(UIAlertView和UIActionSheet)

iOS8推出了几个新的“controller”,主要是把类似之前的UIAlertView变成了UIAlertController,这不经意的改变,貌似把我之前理解的“controller”一下子推翻了...
  • lg767201403
  • lg767201403
  • 2016年03月17日 11:21
  • 303

Swift基础(二十二)UIAlertView,UIActionSheet,UIAlertController

说明:使用UIAlertController时,在显示时,需要“模态”出这个空件,最好是自定义一个类,否则很可能会“模态”不出来 class RootViewController: UIView...
  • LiqunZhang
  • LiqunZhang
  • 2016年07月26日 13:25
  • 130

UIAlertController的使用(ios9.0后代替UIAlertView与UIActionSheet)

UIAlertController是用来代替之前我们使用的UIAlertView和UIActionSheet,这次的改进总体来讲,感觉思路更清晰简洁了,使用起来也是颇为顺手,下面不多说老样子上代码...
  • siwen1990
  • siwen1990
  • 2016年01月21日 18:06
  • 4140

对话框视图UIAlertView,上拉菜单UIActionSheet,以及9.0之后完全取代他们的的UIAlertController

我们经常在通关游戏,或者提示信息的时候看到屏幕中央直接弹出个视图,其实这是一种对话框视图,通过UIAlertView可以实现很多更灵活的功能 下面是初始化和显示一个带有取消和确定的对话框视图 ...
  • nightnull
  • nightnull
  • 2015年11月21日 20:42
  • 572
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UIAlertController UIAlertAction (UIAlertView, UIActionSheet)(最好)
举报原因:
原因补充:

(最多只允许输入30个字)