0

Моего приложения структурирован, как показано ниже:Как отправить событие UIViewController из другого одного

1. UITabbarController 
     1.1 UIViewController 
     1.2 UINavigationController   
      1.2.1 UIViewController 
      1.2.2 UIViewController 
      1.2.3 UIViewController 

Они приведены в ниже порядка:

1, present -> 1.2, 1.2.1, 1.2.2, 1.2.3 

После того, как пользователь закончил свою работу с 1.2. 3, 1.2 NavigationController отклоняется.

Я хочу 1,1 UIViewController знать, что 1.2.3 закончил свою работу

Как я могу добиться этого?

ответ

3

Существует простой способ выполнить (но не способ выполнения), который вы можете использовать NSNotificationcenter. 1,1 UIViewController ждать уведомления:

[[NSNotificationCenter defaultCenter] addObserver:self 
     selector:@selector(receiveTestNotification:) 
     name:@"TestNotification" 
     object:nil]; 

Когда 1.2.3 закончил свою работу, отправить уведомление:

[[NSNotificationCenter defaultCenter] 
     postNotificationName:@"TestNotification" 
     object:nil]; 
1

Вы можете использовать уведомление для достижения этой цели.

Уведомление

Для проверки уведомления @ ответ манекена. Преимущество использования уведомления заключается в уменьшении ненужной связи между объектами.

Другой подвох

Как VC 1.1 является частью UITabbarController, вы можете получить доступ к нему с помощью

NSArray *viewControllers = [tabBarController viewControllers]; 

Теперь вы можете получить доступ к VC 1.1 из viewControllers массива (может быть, вы должны добавить iskindofclass) и отправлять ему сообщения. Опять же, это грязный трюк. И это просто для информации :)