我有两个视图控制器.我按下按钮使用下面的代码,从一个视图导航到另一个视图.
*let secondViewController = self.storyboard!.instantiateViewControllerWithIdentifier("NotificationController") as! NotificationController self.navigationController!.pushViewController(secondViewController,animated: true)*
对于背面,我使用条形按钮上的条形按钮单击后面的代码.
self.navigationController?.popViewControllerAnimated(true)
所以我的问题是如果我从一个视图连续到另一个视图然后它添加到堆栈中.我想只显示另一个视图,当它已经添加到堆栈中以停止添加它时.它只添加一次.
解决方法
要检查导航堆栈是否包含特定类型的视图控制器,您可以使用:
if let viewControllers = self.navigationController?.viewControllers { if viewControllers.contains(where: { return $0 is YourViewController }) { //Write your code here } }
要从导航堆栈中删除特定控制器,您需要更改导航堆栈.
例:
if var viewControllers = self.navigationController?.viewControllers { for controller in viewControllers { if controller is UIViewController { viewControllers.removeElement(controller) self.navigationController?.viewControllers = viewControllers } } }