IOS 弹框AlterView的使用(IOS8.0之前使用)UIAlertController(IOS9.0使用)

 

 

#pragma mark - 代理方法
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // 1.取得被点击这行对应的模型
    MJHero *hero = self.heros[indexPath.row];
    
    // 弹框
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"数据展现" message:nil delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"肯定", nil];  
    // 设置对话框的类型
    alert.alertViewStyle = UIAlertViewStylePlainTextInput;
    
    // 取得惟一的那个文本框,显示英雄的名称
    [alert textFieldAtIndex:0].text = hero.name;
    
    [alert show];
    
    // 绑定行号到alertView上
    alert.tag = indexPath.row;
}

#pragma mark - alertView的代理方法
/**
 *  点击了alertView上面的按钮就会调用这个方法
 *
 *  @param buttonIndex 按钮的索引,从0开始
 */
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 0) return;
    
    // 按钮的索引确定不是0
    
    // 1.取得文本框最后的文字
    NSString *name = [alertView textFieldAtIndex:0].text;
//    int row = alertView.tag;
//    NSIndexPath *path = [NSIndexPath indexPathForRow:row inSection:0];
//    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:path];
//    cell.textLabel.text = name;
    
    // 2.修改模型数据
    int row = alertView.tag;
    MJHero *hero = self.heros[row];
    hero.name = name;
    
    // 3.告诉tableView从新加载模型数据
    // reloadData : tableView会向数据源从新请求数据
    // 从新调用数据源的相应方法取得数据
    // 从新调用数据源的tableView:numberOfRowsInSection:得到行数
    // 从新调用数据源的tableView:cellForRowAtIndexPath:得知每一行显示怎样的cell
    // 所有刷新
//    [self.tableView reloadData];
    
    // 局部刷新
    NSIndexPath *path = [NSIndexPath indexPathForRow:row inSection:0]; [self.tableView reloadRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationBottom];
}

 

IOS 9.0以上用UIAlertController 代替UIAlertView(实例转载)ide

- (void)viewDidLoad {
    [super viewDidLoad];
    // 建立一个BUTTON 点击显示弹框
    UIButton *button = [UIButton buttonWithType:(UIButtonTypeCustom)];
    button.frame = CGRectMake(100, 100, 100, 100);
    // 给BUTTON 添加点击方法
    [button addTarget:self action:@selector(actionButton:) forControlEvents:(UIControlEventTouchUpInside)];
    button.backgroundColor = [UIColor blueColor];
    [self.view addSubview:button];
}
// button的点击方法
- (void)actionButton:(UIButton *)button
{
    // 初始化一个一个UIAlertController
    // 参数preferredStyle:是IAlertController的样式
    // UIAlertControllerStyleAlert 建立出来至关于UIAlertView
    // UIAlertControllerStyleActionSheet 建立出来至关于 UIActionSheet
    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示" message:@"" preferredStyle:(UIAlertControllerStyleAlert)];

    // 建立按钮
    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"肯定" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction *action) {
        NSLog(@"注意学习");
    }];
    // 建立按钮
    // 注意取消按钮只能添加一个
    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:(UIAlertActionStyleCancel) handler:^(UIAlertAction *action) {
    // 点击按钮后的方法直接在这里面写
        NSLog(@"注意学习");
    }];

//    // 建立警告按钮
//    UIAlertAction *structlAction = [UIAlertAction actionWithTitle:@"警告" style:(UIAlertActionStyleDestructive) handler:^(UIAlertAction *action) {
//        NSLog(@"注意学习");
//    }];
//
    // 添加按钮 将按钮添加到UIAlertController对象上
    [alertController addAction:okAction];
    [alertController addAction:cancelAction];
    //[alertController addAction:structlAction];

    // 只有在alert状况下才能够添加文本框
    [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {
        textField.placeholder = @"用户名";
        textField.secureTextEntry = YES;
    }];

//    // 取出文本
//    UITextField *text = alertController.textFields.firstObject;
//    UIAlertAction *action = alertController.actions.firstObject;

    // 将UIAlertController模态出来 至关于UIAlertView show 的方法
    [self presentViewController:alertController animated:YES completion:nil];
}
View Code