如何将数据从DetailViewController的子视图传递到MasterViewController?

时间:2012-07-08 07:39:16

标签: uitableview nsfetchedresultscontroller uistoryboard ipad

我有一个iPad Storyboard驱动的应用程序,它使用拆分视图来显示主视图和详细视图。

DetailViewController有一个子UITableViewController,它在DetailViewController中填充原型UITableView。 UITableViewController使用NSFetchedResultsController来管理数据检索,以方便将数据与UITableView一起使用。

MasterViewController包含另一个UITableView,其中包含UITableViewController中包含的数据子集。

我遇到的问题是我需要MasterViewController能够从NSFetchedResultsController记录集更新它的内容,但是发现我不能为此目的使用委托,因为UITableViewController是DetailViewController的子节点,这是MasterViewController的一个孩子。

虽然我知道我可以使用NSNotificationCenter来执行此操作,但我希望我可以通过视图层次结构将相关数据传递回MasterViewController。我考虑将FRC中的数据加载到实例变量中并使用KVO触发DetailViewController上的委托方法,但这似乎很复杂。  这是目前设置的概述:

MasterViewController --> DetailViewController --> UITableViewController.NSFetchedResultsController

任何人都可以建议实现这一目标的最佳途径吗?

2 个答案:

答案 0 :(得分:0)

我会使用另一个NSFetchedResultsController实例将数据提供给MasterViewController中的表视图。

答案 1 :(得分:0)

我使用NSNotification和方法postNotificationName:object:userInfo:解决了这个问题,将值的NSDictionary作为userInfo传递。 然后我设置我的MasterViewController来监听通知并处理NSDictionary以自我更新。

这保留在Apple设定的编程指南中,并允许我在我的应用程序中的任何位置传递相同的信息。

此处有更多详情:Notification Programming Topics