我试图理解为什么当我在启动后自动跳转到第二个视图(使用UINavigationController)并查看存储状态时,工具栏项目没有出现?
当我返回主页面(通过UINavigationController标准安排),然后在UITableView中选择行,然后再次返回到同一视图,工具栏项目显示正常。
代码提取给出了粗略的想法:
mainController - 基于正常选择的条目
mainController - 重新启动时&检查以前的状态用户是否在第二层视图中
第二层视图
代码:
- (void)setupToolbar {
[self.navigationController setToolbarHidden:NO];
UIBarButtonItem *increaseFontButton = [[UIBarButtonItem alloc]
initWithImage:[UIImage imageNamed:@"icon_zoom_in.png"]
style:UIBarButtonItemStylePlain
target:self
action:@selector(pressButtonIncreaseFont:)
];
UIBarButtonItem *decreaseFontButton = [[UIBarButtonItem alloc]
initWithImage:[UIImage imageNamed:@"icon_zoom_out.png"]
style:UIBarButtonItemStylePlain
target:self
action:@selector(pressButtonDecreaseFont:)
];
NSArray *items = [NSArray arrayWithObjects: increaseFontButton, decreaseFontButton, nil];
self.toolbarItems = items;
//release buttons
[increaseFontButton release];
[decreaseFontButton release];
}
有什么想法吗?找错的想法?
答案 0 :(得分:0)
Objective-C的一个特性我发现非常烦人且容易出错的是在null对象上调用方法的静默失败。在setupToolBar方法的第一行之后,检查navigationController是否为null:
NSLog(@" navigationController is 0x%x", self.navigationController);
对于重启案例,navController的创建方式与常规案例相同吗?
答案 1 :(得分:0)
我找到了如何通过消除过程解决这个问题,但我不明白为什么:)
所以修复它的是修改应用程序委托的“didFinishLaunchingWithOptions”方法中的以下行:
// OLD Entry - Did not work
//[self.window addSubview:navigationController.view];
// NEW Entry - Fixed it
self.window.rootViewController = self.navigationController;
任何想法为什么?