当我根据存储状态自动跳转到该视图时,为啥工具栏项不出现?
Posted
技术标签:
【中文标题】当我根据存储状态自动跳转到该视图时,为啥工具栏项不出现?【英文标题】:why do toolbar items not appear when I automatically jump to that view based on stored state?当我根据存储状态自动跳转到该视图时,为什么工具栏项不出现? 【发布时间】:2011-04-16 11:46:47 【问题描述】:我试图了解为什么在启动并查看存储状态后自动跳转到第二个视图(使用 UINavigationController)时,工具栏项没有出现?
当我返回主页时(通过 UINavigationController 标准安排),然后选择 UITableView 中的行,然后再次返回相同的视图,工具栏项看起来很好。
给出粗略的代码摘录是:
mainController - 基于正常选择的条目
通过“didSelectRowAtIndexPath” 创建新的视图控制器并将 (pushViewController) 推入堆栈mainController - 重新启动并检查前一个状态用户是否在第二层视图中
在 viewDidLoad 方法的底部检查上一个视图的状态 如果需要然后按照与上述正常选择方法相同的方法自动跳转到第二层视图 - 实际上我重构了两者的代码以使用相同的方法/代码第二层视图
在 ViewDidLoad 中设置工具栏 - 此方法中的代码代码:
- (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];
有什么想法吗?寻找故障的想法?
【问题讨论】:
【参考方案1】:我发现 Objective-C 的一个特性非常烦人且容易出错,那就是在空对象上调用方法时静默失败。在 setupToolBar 方法的第一行之后,检查 navigationController 是否为空:
NSLog(@" navigationController is 0x%x", self.navigationController);
是否以与常规情况相同的方式为重新启动情况创建导航控制器?
【讨论】:
感谢领导 Mike - 试过了 - 不幸的是它似乎没问题(即在我的情况下这似乎不是问题) - 我得到“navigationController is 0x553e780”的情况工具栏不存在 在您的第二个视图控制器中,查找 hidesBottomBarWhenPushed 和 NSLog 该值。如果它根本不存在,请将其设置在您的 init 方法中并尝试这两个值。它可能默认为意外值。 谢谢 - 不幸的是,这并没有帮助(如果有的话,我永远不会找到它)【参考方案2】:我想出了如何通过消除过程来解决这个问题,但我不明白为什么:)
那么修复它的原因是更改了应用程序委托的“didFinishLaunchingWithOptions”方法中的以下行:
// OLD Entry - Did not work
//[self.window addSubview:navigationController.view];
// NEW Entry - Fixed it
self.window.rootViewController = self.navigationController;
有什么想法吗?
【讨论】:
以上是关于当我根据存储状态自动跳转到该视图时,为啥工具栏项不出现?的主要内容,如果未能解决你的问题,请参考以下文章