我对iPhone开发很新,并且很难找到我认为是解决这个问题的巧妙方法。
我有一个用户界面,其中记录数据的摘要显示在导航控制器内的表格中。当用户单击行的附件按钮时,新视图被推到导航控制器上,显示用户可以编辑相应记录中的数据的视图。完成后,编辑视图将从导航控制器的堆栈中弹出,用户将返回到表视图。
我的问题是,当用户返回到表视图时,该表仍会显示编辑记录之前的数据状态。因此,我必须重新加载表数据以显示更改。
在显示表数据之前,似乎无法重新加载表数据,因为调用仅更新显示的记录。在显示表格后重新加载它会导致旧数据在用户眼前发生变化,我对此并不满意。
在我看来,这似乎是一个非常正常的想要在iPhone应用程序中做的事情。
有人可以建议这样做的最佳做法吗?我觉得我错过了什么。
干杯 - 史蒂夫。
答案 0 :(得分:16)
标准方法起初可能听起来很麻烦,但在很多情况下都是一种有用的模式。
在tableview类中创建一个类似的方法:
-(void)editDone {
[self.tableView reloadData];
}
向编辑控制器添加属性,如:
@property (assign) id delegate;
单击附件时设置代理:
editController.delegate = self;
编辑完成后,请调用您的方法:
[delegate performSelector:@selector(editDone) withObject:nil];
您可以创建类似的方法来处理编辑组件的取消,或者执行模式编辑控制器的解除等。如果您愿意,可以将所有这些放在协议中更加优雅。
答案 1 :(得分:13)
我将通过以下方式实现此目的:
保存已点击单元格的indexPath。
实现视图控制器的-[UIViewController viewWillAppear:]
方法,该方法包含UITableView。如果保存的indexPath不是nil,则使用以下命令重新加载指定的单元格
-[UITableView reloadRowsAtIndexPaths:withRowAnimation:]