一 UITableView Delegate 方必须遵循 UITableViewDelegate协议
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 这句是定义cell右边的尖角号
#pragma mark - 代理方法
#pragma mark 返回indexPath这行cell的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
// return 70 + indexPath.row * 20;
return 70; 该方法直接返回cell的高度
}
#pragma mark 选中了某一行的cell就会调用
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath//本句实现点击行要执行的方法
{
// 0.取出所点击这行的产品对象
Shop *shop = _shops[indexPath.row];
// 1.创建弹框
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"产品信息展示" message:nil delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
// 设置样式(一个明文文本框)
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
// 设置文本框的默认文字
[alert textFieldAtIndex:0].text = shop.name;
// 2.显示弹框
[alert show];
// 3.绑定行号 为 alertview的tag
alert.tag = indexPath.row;
}
二 UIAlertView 的Delegate方法
// 2.2.刷新表格
// [_tableView reloadData]; // 整体刷新(每一行都会刷新)
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:0];
NSArray *paths = @[indexPath];
[_tableView reloadRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationLeft];
#pragma mark - alertview的代理方法
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex//监听确认按钮,实现修改方法,通过传UIAlertView tag
{
if (buttonIndex == 0) return;
// 1.取出文本框的文字
NSString *text = [alertView textFieldAtIndex:0].text;
// 2.将文字更新到对应的cell上面去
// 2.1.修改对应位置的模型数据
int row = alertView.tag; // alertView的tag就是行号
Shop *shop = _shops[row];
shop.name = text;
// 2.2.刷新表格
// [_tableView reloadData]; // 整体刷新(每一行都会刷新)
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:0];
NSArray *paths = @[indexPath];
[_tableView reloadRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationLeft];
/*
重新向数据源索取数据
重新向数据源发送消息
重新调用数据源的方法,根据返回值决定显示什么数据
*/
}
UITableView与UIAlertView的 Delegate方法实现
原文:http://www.cnblogs.com/xgj0721/p/4340720.html