美文网首页
UIAlertController

UIAlertController

作者: 伊蕊飘零 | 来源:发表于2016-07-12 21:43 被阅读2637次

    从ios8之后,系统的弹框 UIAlertView 与 UIActionSheet 两个并在一了起, 使用了一个新的控制器叫 UIAlertController


    UIAlertController的基本使用

    1.创建UIAlertController

    Title:显示的标题
    message:标题底部显示的描述信息
    preferredStyle:弹框的样式
    样式分为两种:
    UIAlertControllerStyleActionSheet:( 底部)
    UIAlertControllerStyleAlert(中间)

    两种样式分别显示如下:

    第一步:创建控制器
    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"确定要退出嘛?" message:@“显示的信息" preferredStyle:UIAlertControllerStyleActionSheet];
    
    第二步:创建按钮
    弹框当中的每一个按钮分别对应一个 UIAlertAction
    
    UIAlertAction创建方式如下:
    actionWithTitle:按钮要显示的文字
    style:按钮要显示的样式
         样式分为三种:
          UIAlertActionStyleDefault:默认样式,默认按钮颜色为蓝色
          UIAlertActionStyleCancel:设置按钮为取消.点击取消是,会动退出弹框.
                                   注意:取消样式只能设置一个,如果有多个取消样式,则会发生错误.
          UIAlertActionStyleDestructive:危险操作按钮,按钮颜色显示为红公
         handler:点击按钮时调用Block内部代码.
    
    UIAlertAction *action = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
           NSLog(@"点击了取消");
    }];
    
    UIAlertAction *action1 = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
           NSLog(@"点击了取消");
           [self.navigationController popViewControllerAnimated:YES];
    }];
    
    第三步:添加按钮
    把创建的UIAlertAction添加到控制器当中.
    [alertController addAction:action];
    [alertController addAction:action1];
    
    除了添加按钮之外,还可以添加文本框,
    添加文本框的前提是UIAlertController的样式必须得要是UIAlertControllerStyleAlert样式.否则会直接报错
    添加文本框方法为:
    [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
        textField.placeholder = @“文本框点位文字";
    }];
    
    运行效果为:
    
    通过控制器的textFields属性获取添加的文本框.注意textFields它是一个数组.
    UITextField *textF =  alertController.textFields.lastObject;
    
    第四步:显示弹框.(相当于show操作)
    [self presentViewController:alertController animated:YES completion:nil];
    
    

    UIAertController放置可以输入的textField

    //点击某一cell 就出现警示框
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
        
        //MARK: - 点击某一行弹框
        UIAlertController * alertVc = [UIAlertController alertControllerWithTitle:@"编辑" message:@"修改个人信息" preferredStyle:UIAlertControllerStyleAlert];
        
        
        //MARK: -  只有UIAlertControllerStyleAlert 这种模式可以添加文本框
        if (alertVc.preferredStyle == UIAlertControllerStyleAlert) {
            
            //添加输入框
            [alertVc addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
                NSLog(@"%@---->>",textField);
                self.alertTextFileContent = textField.text;
                
    
    //            //监听文本框的改变
                [textField addTarget:self action:@selector(valueChange:) forControlEvents:UIControlEventEditingChanged];
    //
    //            [[NSNotificationCenter defaultCenter] addObserver:self
    //                                                     selector:@selector(textFieldDidChangeValue:)
    //                                                         name:UITextFieldTextDidChangeNotification
    //                                                       object:textField];
            }];
    }
         //MARK: - 添加确定和取消
        UIAlertAction * sure = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            
            
    
            if (indexPath.row == 0) {
                
            UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
            cell.detailTextLabel.text = self.alertTextFileContent;
    
            }
            //刷新数据 ,重新调用数据源的代理方法
    //        [self.tv_info reloadData];
            
            //        NSIndexPath * path = [NSIndexPath indexPathForRow:indexPath.row inSection:0];
            //
            //        [self.tv_info reloadRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationLeft];
            
        }];
        UIAlertAction * cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            
        }];
        
        //MARK: - 显示警示框
        [alertVc addAction:sure];
        [alertVc addAction:cancel];
        [self presentViewController:alertVc animated:YES completion:^{
            
        }];
        
    }
    
    

    相关文章

      网友评论

          本文标题:UIAlertController

          本文链接:https://www.haomeiwen.com/subject/avdsjttx.html