0

私の AppDelegate では、 UINavigationController をインスタンス化し、「メイン」ビュー ( MainViewController と呼びましょう)をナビゲーション コントローラーのルート ビュー コントローラーとして追加しています。次に、ナビゲーション コントローラーがサブビューとしてアプリ デリゲートのウィンドウに追加され、ウィンドウが表示されます。すなわち、

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   // viewController is a property of the app delegate
   viewController = [[MainViewController alloc] init];
   viewController.context = [self managedObjectContext];

   UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];

   [self.window addSubview:navController.view];
   [self.window makeKeyAndVisible];
   return YES;
}

MainViewControllerは、プログラムによってインスタンス化され、 MainViewControllerのサブビューとして追加されたビュー コントローラーのサブビューによって投稿される一部の NSNotifications のオブザーバーを追加します。そう、

  • MainViewController (UINavigationController 内)
    • SubViewController
      • 通知を投稿するSubView

UINavigationController をミックスに追加すると、 MainViewController が SubViewによって投稿された通知を適切に処理しなくなります。UINavigationController を削除し、MainViewController を AppDelegate のウィンドウのサブビューとして追加するだけ、通知が適切に処理されます。

SubViewによって投稿された通知の 1 つに対して AppDelegate にオブザーバーを追加しようとしましたが、適切に処理され、その通知を処理している間、MainViewControllerは nil ではありません。

ガイダンスをいただければ幸いです。説明が必要な場合はお知らせください。

4

1 に答える 1

0

さて、ここでいくつかのことが起こっていました:

  1. viewController実際には私のアプリデリゲートのプロパティではありませんでした。これをプロパティにすると、NSNotification が再び処理されるようになりました。
  2. それが整理された後、NSNotification によってトリガーされたセレクターのコードが正しく機能していませんでした。新しいビューをMainViewControllerの navigationController にプッシュするはずでしたが、nil でした。UINavigationController のアプリ デリゲートでプロパティを作成すると、この問題も修正されました。
于 2012-05-27T02:07:37.480 に答える