Intereting Posts
Могу ли я тестировать свое приложение Ionic на своем устройстве iOS без программы Apple Developer Я пытаюсь показать прогресс с MBProgressHUD с помощью MWFeedParser Crash: макет коллекции: <MyLayout>) был освобожден во время обновления в полете Текст выравнивает абзац в богатом UITextView с помощью CoreText? Проблема с CoreAnimation с ARC Наблюдайте за изменениями WiFi / 3G NSMutableURLRequest Опускает заголовок авторизации Входящее видео в телефоне не работает, с правильными настройками ARC Управление памятью: @Property (неатомная, сильная) переменная экземпляра VS Как сделать текстовое поле функциональным внутри таблицы Преобразование SecKeyRef (открытый ключ) в NSString EXC_BAD_ACCESS (код = 1) при вызове ManagedObjectContext save: & error] приложения на устройстве (ios 6) после обновления google plus и facebook SDK dateFormatter строка для типа даты 2013-03-24T02: 15: 23-08: 00 + цель C cloudKit: Ошибка CKSsubscription «Для этого запроса требуется аутентифицированная учетная запись» "

Делегирование из вложенного навигационного стека

У меня есть стандартный контроллер представлений, выступающий в роли делегата для контроллера модального представления над ним. Этот контроллер модального представления содержится в контроллере навигации.

После представления модальности и нажатия другого контроллера представления в стек навигации, я хочу передать некоторые данные обратно на начальный контроллер представления делегата (который представил модальный).

Должен ли я передать сообщение обратно в стек навигационной системы на контроллер корневого представления контроллера модальной навигации первым и просто использовать методы делегата этого контроллера?

ИЛИ

Должен ли я просто передать свойство delegate вместе с вложенным контроллером представления, а затем вызвать делегата напрямую с помощью отдельного протокола. Это работает, но я должен использовать

@property (nonatomic, weak) id delegate; 

вместо

 @property (nonatomic, weak) id <NestedViewDelegate> delegate; 

в противном случае я получаю ошибку несовместимого типа при передаче делегата из контроллера просмотра в стеке:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

{

 NestedViewController *nest = [[NestedViewController alloc] init]; // @property id <RootViewControllerDelegate> delegate [nest setDelegate:[self delegate]]; [[self navigationController] pushViewController:nest animated:YES]; 

}

Какова наилучшая практика для такого рода сценариев?

благодаря

Я хотел бы использовать уведомления, чтобы отделить это. Оформить заказ NSNoticiationCenter.

Вы регистрируетесь для уведомления в своем корне и публикуете у вас ребенка.

http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/nsnotificationcenter_Class/Reference/Reference.html

ПРИМЕР

В объекте Child вы делаете что-то вроде этого:

 [[NSNotificationCenter defaultCenter] postNotificationName:kMyNotificationName object:self userInfo:@{ @"key" : @"value" }]]; 

kMyNotificationName определяется в общем месте, например pch или Constants.h.

В Корне вы бы сделали что-то подобное, либо в init либо, возможно, всякий раз, когда вы нажимаете на ребенка.

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myNotificationName:) name:kMyNotificationName object:nil]; 

Не забудьте удалить наблюдателей в ваш dealloc или когда вы поп ребенка.

 [[NSNotificationCenter defaultCenter] removeObserver:self kMyNotificationName object:nil]; 

Теперь вы можете обработать уведомление примерно так:

 - (void)myNotificationName:(NSNotification *)note { NSDictionary *userInfo = [note userInfo]; // Do stuff using the information passed in. }