2010-12-16 3 views
0

Я работаю над универсальным приложением для iPad и iPhone. У меня есть общий делегат приложения, делегат приложения iPad (подклассы совместно используемый) и делегат приложения iPhone (также подклассы общего) - все это зависит от шаблона в XCode. Приложение также имеет общий контроллер просмотра для навигации. В iPad он используется как главный контроллер просмотра в SplitViewController. В приложении для iPhone он отображается как контроллер корневого представления UINavigationController.NSNotificationCenter не работает на стороне iPhone универсального приложения

В моем общем делете приложения я хватаю JSON с моего веб-сервера, чтобы настроить приложение, и когда я завершил разбор этих данных, я отправляю уведомление NSNotificationCenter (defaultCenter).

[[NSNotificationCenter defaultCenter] postNotificationName:kDataReady object:nil]; 

Контроллер общего вида является наблюдателем для этого уведомления.

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

Когда я запустить приложение на IPad, общий контроллер зрения собирание этого уведомления и вызов селектора соответствующим образом. При запуске на iPhone это не так. Общие классы между iPhone и iPad создаются в одном порядке, и я могу проверить это в журналах консоли. Я понятия не имею, почему это работает не так, как ожидалось. Помогите!

ответ

1

Действительно ли метод addObserver на iPhone? Просто потому, что это подклассы, это не означает, что необходимые супер-вызовы на месте.

+0

Метод addObserver не вызывается в делегате общего приложения. Делегат общих приложений отправляет уведомление. Контроллер представления, общий для iPad и iPhone, добавляет наблюдателя в его метод init. Такой же метод init вызывается на обоих устройствах, но работает только iPad. – 2010-12-16 23:20:59

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