我正在尝试制作一个具有可选顶级导航控制器的 iPhone 应用程序。
添加它很好,但是尝试设置标题不起作用,除非您尝试添加自己的导航项,此时应用程序崩溃并出现“NSInternalInconsistencyException”,原因是:“无法调用 pushNavigationItem:动画:直接在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 这样庞大而复杂且不允许您浏览源代码的框架,这是我觉得最难的那种谜。在我的其他语言和工具中,我总是可以阅读并进入代码,包括我的框架。在这里,你不能,所以你必须阅读,阅读,阅读,谢天谢地,有很多很棒的文档资源。