iPadとiPhoneのUniversalアプリケーションで作業しています。共有アプリデリゲート、iPadアプリデリゲート(共有をサブクラス化する)、iPhoneアプリデリゲート(共有をサブクラス化する) - すべてがXCodeのテンプレートに基づいています。このアプリケーションには、ナビゲーション用の共有ビューコントローラもあります。 iPadでは、SplitViewController
のマスタービューコントローラとして使用されています。 iPhoneアプリでは、UINavigationController
のルートビューコントローラとして表示されます。ユニバーサルアプリケーションのiPhone側でNSNotificationCenterが動作しません
私の共有アプリケーションデリゲートでは、自分のWebサーバーからアプリを設定するためにJSON
を取得しています。そのデータの解析が完了したら、NSNotificationCenter
(defaultCenter)に通知します。
[[NSNotificationCenter defaultCenter] postNotificationName:kDataReady object:nil];
共有ビューコントローラは、この通知のオブザーバです。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(onDataReady:)
name:kDataReady
object:nil];
iPadでアプリを実行すると、共有ビューコントローラがこの通知を受け取り、セレクタを適切に呼び出しています。 iPhoneで動かすと、そうではありません。 iPhoneとiPadの間の共通のクラスは同じ順序でインスタンス化され、コンソールログによってこれを確認できます。私はこれが期待どおりに機能しない理由についての手がかりを持っていません。助けて!
addObserverメソッドは共有アプリケーションデリゲートで呼び出されません。共有アプリデリゲートが通知をポストします。 iPadとiPhoneの両方に共通のビューコントローラは、そのメソッドにオブザーバを追加しています。両方のデバイスで同じinitメソッドが呼び出されますが、iPadのみが動作します。 –
あなたはaddObserverが実際に実行されたことを(デバッガなどで)確認していますか?また、Constantは完全に同じになるように十分上流に定義されていますか? – LordT
ああ、最後の1つのポイントは:onDataReady:(id)送信者は実際にiPhone Viewcontrollerで定義されていますか?より良いヘルプを提供するには、これらのクラスの.hファイルを持つことが良いでしょう。 – LordT