繁体   English   中英

如何使用故事板与标签栏控制器作为初始控制器共享UIManagedDocument?

[英]How to share a UIManagedDocument using Storyboards with a Tab Bar Controller as initial controller?

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

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

我想共享一个UIManagedObject以便使用相同的Managed Object Context,因此,如果用户在表视图上更新,则该数据也将针对该映射进行更新,因此无需更新两次。

最初,我想到了对Tab Bar Controller进行子类化,并添加UIManagedDocument作为属性,然后将其传递给prepare Segue方法的每个控制器。 但是我读到UITabBarController并不打算被子类化。

另一种方法是创建一个View Controller,将Managed Document as属性添加到它,并添加一个Tab栏。 但是我认为通过以图形方式显示一些关系而仅以代码形式显示其他关系,我的情节提要板将变得不清楚或不一致。

哪一个合适? 还是有更好的方法呢?

在此先感谢您,并致以最诚挚的问候。

- (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的核心数据

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM