#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(实例转载)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
- (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]; }