【问题标题】:Navigation Bar not showing with Push Segue on iOS 7iOS 7 上的 Push Segue 未显示导航栏
【发布时间】:2015-11-20 20:32:30
【问题描述】:

我在一个视图控制器和另一个视图控制器之间有一个 push segue。当从操作表中选择某个选项时,将执行 segue 并显示视图。我按照this answer 创建了segue。

在 iOS 8 上,这可以正常工作。视图被添加到导航控制器,并自动出现一个后退按钮。然而,在 iOS 7 上,我刚刚注意到视图显示为模式,根本不显示导航栏。我不知道什么时候开始发生这种情况,但我似乎无法弄清楚为什么。

当操作表项被按下时,我使用:

[self performSegueWithIdentifier:@"showRouteInformationFromMap" sender:nil];

调用segue。我准备使用:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([[segue identifier] isEqualToString:@"showRouteInformationFromMap"]) {
        [[segue destinationViewController] setRouteInfo:selectedRouteID];
    }
}

这只是在目标控制器上分配一个值。我没有对任一视图控制器上的导航栏进行任何更改。

【问题讨论】:

  • 这里有点摸不着头脑,但是 iOS 8 中添加了一些在 iOS 7 中不可用的转场。您在情节提要中定义了哪种转场?想知道您是否选择了仅适用于 iOS 8 的转场,但由于该转场类型不存在,它正在退回到 iOS 7 上的模态转场。
  • 根据界面生成器,segue 类型是“显示(例如推送)”。我有另一个使用完全相同的方法显示的 segue,但有效。
  • 是的,那应该不是问题。刚刚注意到您的 prepareForSegue: 方法调用在 if 子句中的 segue 标识符与在操作表调用中定义的标识符不同。不确定这是否会影响您。
  • 抱歉,这是一个复制粘贴错误。
  • k,其他人可能比我能提供更多帮助。我需要看看故事板是如何连接起来的,以及视图控制器中的不同属性,以验证一切是否正常。

标签: ios objective-c iphone uinavigationcontroller


【解决方案1】:

尝试删除情节提要中的转场并再次创建转场。这种方法在 iOS 10 中适用于我。

【讨论】:

  • 哈哈真是个疯狂的错误。似乎如果您创建一个 Show detail segue,然后将其类型更改为 Show (Push),它将不会显示导航栏。这就是为什么你需要重新创建它。然后它就起作用了!
【解决方案2】:

有两种解决方法。

show segue 是在 iOS 8 中引入的,因此在 7 中出现意外行为是非常值得期待的。

第一个解决方法: 手动推动你的控制器

UIViewController *myController = [self.storyBoard.instantiateViewControllerWithIdentifier:@"storyboardIdentifier"];
self.navigationController pushViewController:myController animated:YES];

第二个解决方法: 使用故事板

断开显示 segue 并 连接 push segue(显示为已弃用)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多