我的应用程序使用位置数据,并将其作为表格和地图显示。
它以标签栏控制器开始,每个视图都是一个导航控制器(一个用于表视图,一个用于地图等)。
我想共享一个UIManagedObject以便使用相同的托管对象上下文,因此如果用户在表视图中更新,则数据也会针对地图进行更新,因此无需更新两次。
最初我想过将Tab Bar Controller子类化并添加一个UIManagedDocument作为属性,然后将它传递给prepare for segue方法的每个控制器。但我读到UITabBarController并不意味着要被子类化。
另一种方法可能是创建一个View Controller,将Managed Document添加为属性,并将Tab Bar添加到其中。但我认为我的故事板不清楚或不一致,通过图形显示某些关系,而其他人只是在代码中。
哪一个合适?或者有更好的方法吗?
提前致谢并致以最诚挚的问候。
答案 0 :(得分:3)
- (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"];
}
}
答案 1 :(得分:2)
我也遇到了这个问题,我选择了一个单独的文档处理程序类,它通过一个块提供对加载文档的访问。
[[MYDocumentHandler sharedDocumentHandler] performWithDocument:^(UIManagedDocument *document) {
// Do stuff with the document, set up a fetched results controller, whatever.
}];
我已经写了我的解决方案并在此处发布了代码:Core Data with a Single Shared UIManagedDocument