【问题标题】:self?.performSegue is not showing navigation barself?.performSegue 没有显示导航栏
【发布时间】:2018-01-24 10:26:45
【问题描述】:
self?.performSegue(withIdentifier: "myview", sender: nil)

即使我在情节提要中使用 push,上面的代码也不会显示导航栏。 下面的代码向我显示了一个错误,即使存在正确名称的 segue

self?.navigationController?.performSegue(withIdentifier: "myview", sender: nil)

错误

由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'Receiver () has no segue with identifier 'myview''

【问题讨论】:

  • 你想在哪个班级做这个,self 指的是什么?你确定你正确设置了 segue 标识符吗?
  • 是的,这就是简单 self?.performSegue 工作但没有导航栏的原因。导航是抛出错误
  • 谢谢,大家都说我做self的时候没有viewcontroller?.navigationController?.performSegue。

标签: ios swift storyboard uinavigationbar


【解决方案1】:

您的导航栏可能已隐藏,请尝试在视图控制器中添加此代码,该代码会被 segue 调用

override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.setNavigationBarHidden(false, animated: true)
}

注意:请检查使用“myView”推送segue的viewController是否嵌入在UINavigationController中。

【讨论】:

    【解决方案2】:

    self?.navigationController?.performSegue(withIdentifier: "myview", sender: nil) segue 附加到 UIViewController 子类实例而不是 UINavigationController 实例,因此您不能在后者上调用它。

    如果您在执行 segue 后没有导航栏,则必须确保将视图控制器正确嵌入导航控制器中,或者如果您手动添加导航栏,请确保将其添加到其他viewWillAppear 方法中的视图控制器。

    【讨论】:

      【解决方案3】:

      案例 1:确保 UINavigationBar 上的可见性。

      情况 2:将 segue 连接到 UINavigationController 而不是 UIViewController。

      【讨论】:

        【解决方案4】:

        Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<UINavigationController: 0x1180a2e00>) has no segue with identifier 'myview''

        正如错误中所写的那样,没有segue被命名为“myView”,这取决于你是否使用故事板,你应该看看here 如果没有故事板,请查看that

        但此外,请花时间阅读错误消息。

        【讨论】:

          【解决方案5】:
          self?.navigationController?.performSegue(withIdentifier: "myview", sender: nil)
          

          此行不会执行与 myview 的 segue。您已将 segue 附加到视图控制器而不是导航控制器。这就是您在执行此操作时遇到错误的原因。

          self?.performSegue(withIdentifier: "myview", sender: nil)
          

          检查您是否已将视图控制器正确附加到 segue,并确保您的视图控制器具有附加的导航控制器。如果在没有附加导航控制器的情况下直接推送,则会导致问题。

          希望它能解决问题。如果没有,请在找到解决方案时更新答案。谢谢!

          【讨论】:

            【解决方案6】:

            我遇到了一个问题,即通过 segue 呈现一个新的 VC 时只显示一个没有导航栏的白屏。导航控制器似乎被忽略了。

            原来该应用通过以下代码设置了一个奇怪的调色板:

            UINavigationBar.appearance().tintColor = .white
            

            为新的 VC 提供背景色表明导航栏和控制器确实存在,只是全部混合为白色。

            【讨论】:

              猜你喜欢
              • 2015-03-21
              • 1970-01-01
              • 1970-01-01
              • 2018-02-14
              • 2019-11-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-08-19
              相关资源
              最近更新 更多