无法使用Swift通过导航控制器返回到另一个导航控制器的VC

时间:2016-08-25 10:57:09

标签: ios swift uinavigationcontroller storyboard popviewcontroller

如下所示,notificationsVC TabBarController 的一部分,它嵌入navigationContoller(让我们先调用它nC)。然后是来自notificationsVC的segue到第二个navigationController,它将显示messagesVC。

messagesVC中有一个后退按钮,按下后应该返回notificationsVC

func backbutton() {        
    navigationController?.popViewControllerAnimated(true)         
}

现在这显然不起作用,因为navigationController将获取最近的NC并在其堆栈中弹出VC,但它不会让我回到notificationsVC

还有其他选择吗?虽然我试过这个并没有成功。

self.dismissViewControllerAnimated(true, completion: nil);

enter image description here

更详细的观点 enter image description here

此外,我正在使用JSQMessagesViewController库来显示messagesVC中的消息,这些消息无关紧要,但仍值得一提。谢谢你的时间!

3 个答案:

答案 0 :(得分:0)

尝试: -

let nVC = self.navigationController?.tabBarController?.navigationController?.storyboard?.instantiateViewControllerWithIdentifier("NotificationStoryboardVC_ID") as! NotificationVC

navigationController?.tabBarController?.navigationController?.pushViewController(nVC, animated: true)

答案 1 :(得分:0)

你可以通过从TabBarViewController中询问它来访问第一个NavigationViewController,如下面的代码所示:

tabBarController?.navigationController?.popViewControllerAnimated(true)

还要求第二个导航控制器的导航控制器工作:

navigationController?.navigationController?.popViewControllerAnimated(true)

答案 2 :(得分:0)

您的导航控制器只有一个VC,即MessagesVc。因此,当您弹出它时,导航控制器堆栈中没有其他VC可以呈现。您的NotificationsVC不在导航控制器的堆栈中。

所以我建议你在后退按钮上点击这样做:

tabBarController?.selectedIndex = Index_Of_NotificationsVC