ビューベースのアプリケーションとして新しいxcodeプロジェクトを作成しましたが、別のUINavigationController
(s)内で使用する予定のUIViewController
(s)のセットがあります。self.navigationControllerは、RootViewControllerとして割り当てられた後はnullですか?
NSMutableArray *navControllers = [[NSMutableArray array];
for (id aVC in self.myViewControllers) {
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:aVC];
//[aVC setNavigationController:navController];
[navController setNavigationBarHidden:YES];
[navController setToolbarHidden:YES];
[navControllers addObject:navController];
[navController release];
}
_navigationControllers = [[NSArray arrayWithArray:navigationControllers] retain];
_navigationControllers
がParentViewController
の一員として保持されるので、私は、ループ内で開始されたすべての私のナビゲーションコントローラを想定保管されています。すべてのUINavigationController
(S)と、すべてのmyViewControllersが開始された後、前ParentViewController.m
で
_navigationControllers
によってので、放出されたかnil
になるが、私はSomeOtherViewController
をプッシュするMyViewController
でnavigationControllerを使用しようとすると、それは動作しませんされません。
- (IBAction)pushDetailView {
[self.navigationController pushViewController:self.detailViewController animated:YES];
}
私はpushViewController:someOtherViewController
の前にブレークポイントを置き、 "po [self navigationController]"とコンソールはnil
の参照を教えてくれます。
私は [[UINavigationController alloc] initWithRootViewController:aVC]
を行う際rootController
からnavigationController
を割り当てずに同じことをAppleの「iOS用のビューコントローラプログラミングガイド」ので、根本的なメカニズムは、aVC.navigationController
としてnavigationController
を割り当てるすると仮定。
forループの2行目のマークを解除しない限り、のnavigationController
はaVCに存在しません。
私はメカニズムを誤解していますか?私の場合には別の解決策がありますか? ありがとうございます!
あなたは_navigationControllersのプロパティ宣言をparent.hファイルから表示できますか?あなたの仮定/論理はすべて私には分かります(つまりinitWithRootViewControllerはルートビューコントローラのnavigationControllerプロパティを自動的に設定する必要があります) – gamozzii