Как поделиться UIManagedDocument, используя раскадровки с контроллером панели вкладок в качестве начального контроллера? - PullRequest
5 голосов
/ 24 февраля 2012

Мое приложение использует данные о местоположении и представляет их как в виде таблицы, так и на карте.

Он начинается с контроллера панели вкладок, каждый из его представлений является контроллером навигации (один для представления таблицы, один для карты и т. Д.).

Я хочу предоставить общий доступ к UIManagedObject, чтобы использовать тот же контекст управляемого объекта, поэтому, если пользователь обновляется при просмотре таблицы, данные также обновляются для карты, поэтому нет необходимости обновлять дважды.

Первоначально я думал о создании подкласса контроллера панели вкладок и добавлении UIManagedDocument в качестве свойства, и просто передав его каждому контроллеру в методе подготовки к переходу. Но я читал, что UITabBarController не предназначен для использования в подклассах.

Другим подходом может быть создание View Controller, добавление управляемого документа в качестве свойства и панели вкладок к нему. Но я думаю, что моя раскадровка была бы неясной или непоследовательной, если бы некоторые отношения были показаны графически, а другие просто в коде.

Какой из них подходит? Или есть лучший способ сделать это?

Спасибо заранее и наилучшими пожеланиями.

Ответы [ 2 ]

3 голосов
/ 18 марта 2012
- (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"];            
    }
}
2 голосов
/ 07 апреля 2012

Я тоже столкнулся с этой проблемой и остановился на отдельном классе обработчика документов, который обеспечивает доступ к загруженному документу через блок.

[[MYDocumentHandler sharedDocumentHandler] performWithDocument:^(UIManagedDocument *document) {
    // Do stuff with the document, set up a fetched results controller, whatever.
}];

Я написал свое решение и разместил здесь код: Базовые данные с единым общим UIManagedDocument

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...