self?.performSegue 没有显示导航栏
Posted
技术标签:
【中文标题】self?.performSegue 没有显示导航栏【英文标题】:self?.performSegue is not showing navigation bar 【发布时间】: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。
【参考方案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 提供背景色表明导航栏和控制器确实存在,只是全部混合为白色。
【讨论】:
以上是关于self?.performSegue 没有显示导航栏的主要内容,如果未能解决你的问题,请参考以下文章
self.performSegue(withIdentifier: "teacherDetail", sender: self) 需要点击两次
self.performSegue 找不到storyboard-segue-ID,即使它已被命名