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
相關文章
相關標籤/搜索