恢复状态导航控制器后截断后退按钮标题

时间:2012-07-22 10:49:41

标签: ios uinavigationcontroller uinavigationbar

当我尝试在启动之间恢复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 个答案:

答案 0 :(得分:1)

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

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

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

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

这是一种压缩方式,可以或多或少地执行系统正在执行的操作,在推送另一个视图之前,始终让父视图至少到达“viewDidAppear”。

相关问题