我有以下情况。嵌入在导航控制器中的视图控制器。
此视图控制器具有一个按钮,该按钮实例化标签栏控制器,然后显示其一个视图控制器。
当我关闭由标签栏控制器提供的控制器时,我总是在相同的实例中最终出现在初始视图控制器中。
我尝试过的是:
func showHomeScreen() {
//trying to dismiss the current view controller ( will move this code out of this method once i figure out how to do it
self.navigationController?.popViewController(animated: true)
self.dismiss(animated: true, completion: nil)
//showing the next view controller
let tabBarController = storyboard?.instantiateViewController(withIdentifier: "TabBarController") as! TabBarController
tabBarController.selectedViewController = tabBarController.viewControllers?[1]
present(tabBarController, animated: true, completion: nil)
}
self.navigationController?.popViewController
=> returns nil
self.dismiss(animated: true, completion: nil)
似乎什么都没做。
任何人都可以告诉我如何解决此问题,我认为它非常简单,但是我找不到答案。
编辑:这是我的故事板的外观:
答案 0 :(得分:0)
发送到下一个viewController后,尝试使用:
navigationController?.viewControllers.remove(at: 1)
这应删除堆栈中第二个的viewController。
答案 1 :(得分:0)
如果导航控制器已推送视图控制器,则效果很好:
self.navigationController?.popToRootViewController(animated: true)