2

Я пытаюсь подписаться на myViewController на пользовательскую NSNotification. Вид иерархия выглядит следующим образом:NSNotification не принимается в UIViewController, чей вид является подзоном UIScrollview


window 
    - rootViewController.view 
     - scrollView 
      - myViewController.view 

направляется уведомление в [NSNotificationCenter defaultCenter] с помощью кнопки внутри вида RootViewController в. RootViewController прослушивает уведомление и отлично реагирует на него.

У меня такой же «прослушивающий» код внутри myViewController, но по какой-то причине он не получает уведомление. Если это часть приложения, он должен получить уведомление, исправить? У меня есть отладочное сообщение внутри метода initWithNibName myViewController, поэтому я знаю, что он подписывается на уведомление. Я даже попробовал, чтобы myViewController прослушивал ВСЕ уведомления, установив имя уведомления на nil. Например:


NSLog(@"main view controller initialized"); 

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

Но не повезло и там. Кто-нибудь видел что-то подобное раньше с NSNotifications?

Любые идеи?

Спасибо!

+0

Установка как 'name:', так и 'object:' в nil обычно делает ваши выбранные уведомления получать * все *, это действительно то, что вы хотите? Кроме того, уверены ли вы, что регистрация и отправка выполняются в одном потоке? – DarkDust

+0

Почему вы устанавливаете UIViewController внутри своего scrollView, а не UIView? – Nyx0uf

+0

И действительно ли существует метод 'statusBarVisibilityChanged:' на вашем объекте? Двойная проверка на опечатки. – DarkDust

ответ

4

Я предполагаю, что контроллер вида освобожден. Это распространенная ошибка - не сохранять контроллер просмотра при его программном программировании.

+0

givin проверка вам, потому что вы ответили первым - вот в чем проблема. я думаю, VIEW был еще жив, потому что у него был супервизор ... но сам myViewController не был. по какой-то причине я предположил, что если вид viewController закладывается, он будет держать контроллер еще живым. благодаря! – taber

1

Если вы уверены, что наблюдение настроено правильно, мое единственное объяснение не получения каких-либо уведомлений заключается в том, что контроллер освобождается до отправки каких-либо уведомлений.

Механизм NSNotification не зависит ни от иерархии представлений, ни от нити. Если у вас есть (живой) объект, который был настроен как наблюдатель, он обязательно получит уведомления.

 Смежные вопросы

  • Нет связанных вопросов^_^