【发布时间】:2014-08-24 00:13:26
【问题描述】:
在我的应用程序中,我在表格视图中列出核心数据条目。我想允许用户使用以模式显示为表单视图的详细视图来编辑记录。我在编辑记录时观察到异常行为。
流程:
- 用户加载带有记录的表格视图。 -工作
- 用户选择要编辑的记录。 -工作
- 用户在视图控制器中编辑记录,显示为模态表单视图。 -工作
- 用户保存编辑并关闭表单视图。 -工作
- Tableview 显示先前编辑的记录的正确更改。 -工作
- 用户重复步骤 2 - 4 选择要编辑的不同记录。 -工作
- Tableview 显示所有记录的正确数据。 - 不工作。
在第 7 步,tableview 将 第一个 已编辑记录的显示恢复到其原始状态。随后的记录编辑会导致所有先前的编辑恢复到其原始状态。如果 tableview 被关闭并重新加载,则记录是正确的,显示所有编辑。
我在 tableview 的 ViewWillAppear 方法中使用了 [tableview reload],但是当模态表单视图控制器被解除时,它似乎没有被触发。
在我的 tableviewcontroller 代码中:
-(void)viewWillAppear:(BOOL)animated
{
[self.tableView reloadData];
}
四处搜索,我没有找到解决方案,希望有人能指出我正确的方向。
谢谢!
【问题讨论】:
-
您的实现中应该有 [super viewWillAppear:animated]。我不知道它的缺失是否会导致 viewWillAppear 不被调用。当您关闭模式时,当然应该这样做。
-
谢谢。我假设你会把它放在模态的解除方法中......它似乎不起作用。我猜可能需要为此设置一个委托方法......使用segue调用模态并且tableview当前不是模态的委托。
-
不,它在 viewWillAppear 中。您应该始终在这些方法(viewDidLoad、viewDidAppear 等)中调用 super。
-
所以,像这样:-(void)viewWillAppear:(BOOL)animated { [super ViewWillAppear:animated]; [self.tableView reloadData]; }
-
是的,没错(除了大写的“V”)。
标签: ios core-data tableview modal-view