2012-07-22 97 views
0

当我尝试在启动之间恢复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方法中,或者通过创建自定义后退按钮来更改后栏按钮的标题,但这些方法都不能解决问题。

enter image description here

回答

1

我怀疑问题是由于推动控制器父具有图,显示之前。我相信你可能会在以下方面取得一些成功,尽管它有一些工作。

  • 当您要恢复状态时,然后隐藏根视图控制器中的导航栏,并显示启动图像而不是普通内容。

  • 当根视图控制器获取“viewDidAppear”,然后使用主队列上的调度块,并推送其他控制器,也配置为隐藏导航栏并显示启动图像。

  • 当你到达显示SUPPOSE的视图控制器时,此时显示真实视图并启用显示导航栏。

这是做的压缩方式或多或少什么系统正在做什么,总是有父视图推另一个视图前至少得到“viewDidAppear”。