2012-01-18 44 views
0

当我学习开发使用的是iOS 5弹出一个NavigationController

我想创建排序(了解核心数据)的联系人列表中的iPhone应用程序的iOS 5 viewWillAppear中不会被调用。

我有一个UITableView嵌入UINavigationController(我已经通过编辑器 - >嵌入 - >导航控制器)。

在我saveContact行动结束时,我也行:

[self.navigationController popViewControllerAnimated:YES]; 

要从联系人创建形式向UITableView中列出的所有联系人移动。获取联系人的代码位于viewWillAppear

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

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

有什么建议吗?

回答

1

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

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

+0

如何设置代理导航控制器? – 2012-01-18 19:38:50

+0

'delegate'是UiNavigationController类的一个属性,因此在表视图控制器的'viewDidLoad'方法中,将表视图控制器设置为导航控制器的代理(self.navigationController.delegate = self)。 – 2012-01-18 19:45:57

+0

它没有工作。这是我的代码的一个pastie:http://pastie.org/3209337和http://pastie.org/3209343。你可以看看它,也许指向正确的方向吗? – 2012-01-18 19:57:23

相关问题