1

我有一个使用拆分视图,以显示一个主设备和细节视图一个iPad故事板驱动的应用程序。如何将数据从DetailViewController的子视图传递给MasterViewController?

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

MasterViewController包含另一个用UITableViewController中包含的数据的子集填充的UITableView。

我遇到的问题是我需要MasterViewController能够从NSFetchedResultsController记录集更新它的内容,但发现我无法为此使用委托,因为UITableViewController是DetailViewController,它是MasterViewController的子项。

虽然我知道我可以使用NSNotificationCenter来做到这一点,但我希望能通过视图层次将相关数据传回MasterViewController。我曾考虑将FRC中的数据加载到实例变量中,并使用KVO触发DetailViewController上的委托方法,但这似乎令人费解。  这是目前设置的概述:

MasterViewController --> DetailViewController --> UITableViewController.NSFetchedResultsController

能的最佳方式任何人提醒,以实现这一目标?

回答

0

我通过使用NSNotification和方法postNotificationName:object:userInfo:解决了问题,将值的NSDictionary作为userInfo传递。 然后我把我的MasterViewController侦听通知和处理NSDictionary的自我更新。

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

更多细节在这里:Notification Programming Topics

0

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

+0

既然我已经取我需要到内存中,并可以快速枚举它能够产生由MasterViewController所需的数据的数据,似乎低效重新检索所有的数据再次。我正在研究使用NSNotifications传递生成的数据,因为我还需要在MasterViewController中发送所选单元的详细信息。 – robotpukeko 2012-07-09 07:59:26

+0

为了避免传播对效率的误解,我会澄清一下,对托管对象上下文的后续读取请求将不会重新检索已存在于内存中的对象。 – lucidbeing 2012-07-09 13:51:35

+0

感谢您的澄清;这是很好的知道! – robotpukeko 2012-07-10 08:32:06

相关问题