如何使用带有标签栏控制器的故事板作为初始控制器来共享UIManagedDocument?
我的应用程序使用位置数据并将其作为表格和地图显示。
它以Tab Bar Controller开始,每个视图都是一个导航控制器(一个用于表视图,一个用于地图等)。
我想共享一个UIManagedObject以便使用相同的托管对象上下文,因此如果用户在表视图中更新,则数据也会针对地图进行更新,因此无需更新两次。
最初我想到了Tab键控制器的子类化并添加了UIManagedDocument作为属性,并且只是将它传递给prepare for segue方法的每个控制器。 但我读到UITabBarController并不意味着是子类。
另一种方法可能是创建一个View Controller,将Managed Document添加为属性,并将Tab Bar添加到其中。 但我认为我的故事板不清楚或不一致,通过图形显示某些关系,而其他人只是在代码中。
哪一个合适? 或者有更好的方法吗?
在此先感谢和最诚挚的问候。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier] isEqualToString:@"showGuide"]) { UITabBarController *tabBarController = (UITabBarController *)[segue destinationViewController]; for (id vc in tabBarController.viewControllers) { [vc setValue:_document forKey:@"document"]; } }
我也遇到了这个问题,我选择了一个单独的文档处理程序类,它通过一个块提供对加载文档的访问。
[[MYDocumentHandler sharedDocumentHandler] performWithDocument:^(UIManagedDocument *document) { // Do stuff with the document, set up a fetched results controller, whatever. }];
我已经写了我的解决方案并在此处发布了代码: 核心数据与单个共享UIManagedDocument