当我尝试在启动之间恢复 UINavigationController 的状态时,我遇到了 UIBarButtonItem/UINavigationBar 的一些奇怪行为。
下面的代码片段显示了我如何恢复导航控制器的状态。此代码片段在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方法中,或者通过创建自定义后退栏按钮来更改后退栏按钮的标题,但这些方法都没有解决问题。