#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]; }