self?.performSegue(withIdentifier: "myview", sender: nil)
即使我在故事板中使用推送,上面的代码也不会显示导航栏。 下面的代码显示错误,即使存在名称正确的segue
self?.navigationController?.performSegue(withIdentifier: "myview", sender: nil)
错误
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'Receiver()没有带标识符'myview'的segue''
答案 0 :(得分:3)
您的导航栏可能已隐藏,请尝试在viewcontroller中添加此代码,该代码由segue
调用override func viewWillAppear(_ animated: Bool) {
self.navigationController?.setNavigationBarHidden(false, animated: true)
}
注意:请检查viewController使用" myView"推送segue。嵌入在UINavigationController中。
答案 1 :(得分:2)
self?.navigationController?.performSegue(withIdentifier: "myview", sender: nil)
segue附加到UIViewController
子类实例而不是UINavigationController
实例,因此您无法在后者上调用它。
如果在执行segue后没有导航栏,则必须确保将视图控制器正确嵌入导航控制器中,或者如果手动添加了导航栏,请确保将其添加到其他在viewWillAppear
方法中查看控制器。
答案 2 :(得分:1)
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<UINavigationController: 0x1180a2e00>) has no segue with identifier 'myview''
就像在Error中写的一样,没有segue被命名为'myView',这取决于你是否使用了故事板,你应该看看here 没有故事板,请检查that
但此外,花时间阅读错误消息。
答案 3 :(得分:1)
答案 4 :(得分:0)
self?.navigationController?.performSegue(withIdentifier: "myview", sender: nil)
此行不会使用myview执行segue。您已将segue与视图控制器而不是导航控制器相连。这就是为什么你这样做时会收到错误的原因。
self?.performSegue(withIdentifier: "myview", sender: nil)
检查您是否已将视图控制器正确连接到segue并确保您的视图控制器附带了导航控制器。如果你直接推动没有附加导航控制器,它将导致问题。
希望它能解决问题。如果没有,请在找到解决方案时更新答案。谢谢!