self?.performSegue没有显示导航栏

时间:2017-08-16 10:13:32

标签: ios swift storyboard uinavigationbar

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

即使我在故事板中使用推送,上面的代码也不会显示导航栏。 下面的代码显示错误,即使存在名称正确的segue

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

错误

  

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'Receiver()没有带标识符'myview'的segue''

5 个答案:

答案 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)

在案例1中:确保UINavigationBar上的可见性。 在案例2中:将segue与UINavigationController连接,而不是UIViewController。 enter image description here

答案 4 :(得分:0)

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

此行不会使用myview执行segue。您已将segue与视图控制器而不是导航控制器相连。这就是为什么你这样做时会收到错误的原因。

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

检查您是否已将视图控制器正确连接到segue并确保您的视图控制器附带了导航控制器。如果你直接推动没有附加导航控制器,它将导致问题。

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