UITableView

右侧索引

- (NSArray *)sectionIndexTitlesForTableView: (UITableView *) tableView {

return @[@"haha",@"lala"]

}

当选中某一行时弹出输入弹框

- (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath

{

    // NSLog(@"%d 被选中", indexPath.row);

    // 0获得选中行的模型

    NJHero*hero =self.heros[indexPath.row];

    // 1.创建一个弹窗

    UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"修改数据" message: nil delegate: self cancelButtonTitle: @"取消" otherButtonTitles: @"确定",nil]; 

    // 设置alert的样式, 让alert显示出uitextfield

    alert.alertViewStyle = UIAlertViewStylePlainTextInput;

    // 获取alert中的textfield

    UITextField*textField =  [alerttextFieldAtIndex:0];

    // 设置数据到textfield

    textField.text= hero.name;

    // 2.显示弹窗

    [alertshow];

    // 通过aler的tag来传递选中的行号

    alert.tag= indexPath.row;

}

#pragma mark - UIAlertViewDelegate

// alertView的按钮被点击的时候就会调用

- (void)alertView: (UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{

    // NSLog(@"buttonIndex = %d", buttonIndex);

    if(0== buttonIndex)return;

    // 必定不是点击的取消

    // 获取修改后的数据

     UITextField *textField =  [alertViewtextFieldAtIndex:0];

    NSString *newStr = textField.text;

    NSLog(@"newStr = %@", newStr);

    // 修改模型

    // 取出对应行的模型数据

    introw = alertView.tag;

    NJHero*hero =  self.heros[row];

    hero.name= newStr;

    // 刷新指定行

    NSIndexPath *path = [NSIndexPath indexPathForRow:row inSection:0];

    [self.tableView reloadRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationRight];

}

你可能感兴趣的:(UITableView)