【发布时间】:2012-07-22 10:49:41
【问题描述】:
当我尝试在启动之间恢复 UINavigationController 的状态时,我遇到了 UIBarButtonItem/UINavigationBar 的一些奇怪行为。
下面的代码 sn-p 显示了我如何恢复导航控制器的状态。这段代码 sn-p 在 viewDidLoad 方法中执行。
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
if ([ud objectForKey:HBStateRestorationQuoteSelection]) {
NSInteger index = [ud integerForKey:HBStateRestorationQuoteSelection];
// Fetch Quote
NSDictionary *quote = [self.quotes objectAtIndex:index];
// Initialize Quote View Controller
HBQuoteViewController *vc = [[HBQuoteViewController alloc] initWithNibName:@"HBQuoteViewController" bundle:[NSBundle mainBundle]];
vc.quote = quote;
// Push Quote View Controller Onto Navigation Stack
[self.navigationController pushViewController:vc animated:NO];
}
结果是后退按钮标题由于某种原因被截断。当以正常方式使用导航控制器时,此行为不会出现。
请注意,截断不是由于导航栏中标题的大小。前面说了,不使用这个状态恢复逻辑的时候,后栏按钮的标题是正常显示的。
我也尝试将恢复代码放在 viewWillAppear 方法中,或者通过创建自定义后退栏按钮来更改后退栏按钮的标题,但这些方法都不能解决问题。
【问题讨论】:
标签: ios uinavigationcontroller uinavigationbar