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