オプションの最上位ナビゲーション コントローラーを持つ iPhone アプリケーションを作成しようとしています。
それを追加しても問題ありませんが、独自のナビゲーション項目を追加しようとしない限り、タイトルを設定しようとすると機能しません。コントローラーによって管理される UINavigationBar。
- (void)applicationDidFinishLaunching:(UIApplication *)application {
rootHasNavBar = NO;
if (window && viewController)
{
// Tab Controller is root:
if (!rootHasNavBar)
{
window.rootViewController = viewController; // viewController:UITabBarController
[window makeKeyAndVisible];
}
else
{
// Navigation controller above UITabBarController
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
window.rootViewController = navigationController;
//Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Cannot call pushNavigationItem:animated: directly on a UINavigationBar managed by a controller.'
UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:NSLocalizedString(@"RentalPoint",nil)];
[ navigationController.navigationBar pushNavigationItem:item animated:YES];
navigationController.toolbarHidden = YES;
[window makeKeyAndVisible];
};
}
どうすればいいですか?それとも、それができない技術的な理由がありますか?
更新: コントローラーのタイトルとナビゲーション項目のタイトルの割り当てをコントローラーの viewDidLoad に移動することを単純に提案した人々は、Cocoa アーキテクチャーの内部 (そして初めての人には非常に直感的でない) の側面に取り組んでいましたが、これはまだ私にはまったくなじみがありませんでした。Cocoa のような巨大で複雑なフレームワークを外側から見ると、ソース コードを参照することはできません。これは、私が最も困難に感じる謎です。私の他の言語とツールでは、フレームワークを含め、いつでもコードを読んでステップインできます。ここでは、できません。ですから、読んで、読んで、読んでください。ありがたいことに、優れたドキュメント ソースがたくさんあります。