弹出NavigationController时不会调用iOS 5 viewWillAppear

时间:2012-01-18 19:04:52

标签: objective-c ios5

我正在学习使用iOS 5开发iPhone应用程序。

我正在尝试创建各种联系人列表(了解核心数据)。

我在UITableView中嵌入了UINavigationController(我通过编辑器完成了这项操作 - >嵌入 - >导航控制器)。

saveContact行动结束时,我有一句话:

[self.navigationController popViewControllerAnimated:YES];

从联系人创建表单移动到列出所有联系人的UITableView。获取联系人的代码位于viewWillAppear

问题是,当我弹出联系人创建表单时,新联系人不会显示在列表中。

我在Apple的文档中发现我应该将UINavigationControllerDelegate添加到UITableViewController,但没有成功。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您需要在UINavigationController中实现UITableViewController协议的navigationController:willShowViewController:animated:方法,并将导航控制器的委托设置为表视图控制器。在您实现该方法时,检查将显示的视图是否与您的视图相同,如果是,则获取结果。

如果您真的想要将Core Data与表格视图集成,我建议您查看NSFetchedResultsController。它简化了对后备数据存储的处理更新,因此如果您以后添加了后台同步功能,后台线程可以不断更新存储,然后NSFetchedResultsController可以为您处理更新表。它还可以使您当前的示例更容易,因为您只需将save:发送到Core Data,然后结果控制器就会开始更新您的表,而不使用viewWillAppear:方法