【问题标题】:Back button title truncated after restoring state navigation controller恢复状态导航控制器后后退按钮标题被截断
【发布时间】: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


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-01-01
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 2015-12-01
      • 1970-01-01
      相关资源
      最近更新 更多