5

我的应用程序使用位置数据并将其显示为表格和地图。

它从一个标签栏控制器开始,它的每个视图都是一个导航控制器(一个用于表格视图,一个用于地图,等等......)。

我想共享一个 UIManagedObject 以使用相同的托管对象上下文,因此如果用户在表格视图中更新,则地图的数据也会更新,因此无需更新两次。

最初我想子类化选项卡栏控制器并添加一个 UIManagedDocument 作为属性,然后将它传递给准备 segue 方法的每个控制器。但我读到 UITabBarController 并不意味着被子类化。

另一种方法是创建一个视图控制器,将托管文档添加为属性,并为其添加一个标签栏。但我认为通过以图形方式显示某些关系而仅在代码中显示其他关系,我的故事板将不清楚或不一致。

哪一个是合适的?或者有更好的方法吗?

提前致谢并致以最诚挚的问候。

4

2 回答 2

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"];            
    }
}
于 2012-03-18T14:02:30.003 回答
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

于 2012-04-07T18:45:15.207 回答