UIViewController.navigationController
がnil
になる問題にぶつかりました。私は必死にこの問題への回答を見つけようとしています。UIViewController.navigationControllerがnilになる
UINavigationController
は、アプリケーションデリゲートに設定を取得します。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.rootViewController = [[RootViewController alloc] initWithNibName:@"RootView" bundle:nil];
UINavigationController* navigationController = [[UINavigationController alloc] initWithRootViewController:self.rootViewController];
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
return YES;
}
RootViewController
が表示されている場合は、self.navigationController
メンバーが設定されていると私はそうのように、ナビゲーションバーを非表示にそれを使用することができます:
- (void)viewWillAppear:(BOOL)animated {
NSLog(@"self = %@, self.navigationController = %@", self, self.navigationController);
[self.navigationController setNavigationBarHidden:YES animated:NO];
}
デバッグ出力には、self
とself.navigationController
の値が表示されます。
ボタンは、このコントローラでクリックすると、self
が同じ値のまま確かしかしself.navigationController
は今nil
です:
私はこの問題に関する質問の数十を見てきましたし、答えは常にそのUIViewController
ですUINavigationController
の一部ではありません。 viewWillAppear
のnavigationController
にアクセスするとうまくいくので、何か他のことが起こっているはずです。あなたは何か指針を持っていますか?必要に応じて、喜んで詳細を提供します。
アップルのエンジニアによる詳細な説明!ありがとうございました。私は幸いにあなたの答えを間違いなく正しいものとして受け入れました。 – digitalbreed