我有一个有三个视图的导航控制器 . 可能的导航路线是:
VC1 - > VC3和
VC1 - > VC2 - > VC3
当用户从VC1进入VC2并最终进入VC3时,我希望导航栏中的后退按钮指向VC1(而不是VC2) . 所以在VC2中,我添加了这段代码 .
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
self.navigationController?.popViewController(animated: true)
}
有用;但我可以看到流行音乐发生了 . 当我在VC2上并且在导航到VC3的过程中,我可以看到VC1一秒钟(VC2已从堆栈中弹出),然后我看到VC3 . 它看起来不太好看 .
有没有更好的方法呢?
谢谢 .
6 回答
使用popToRootViewControllerAnimated: . 如果我正确理解您的问题,这正是您所需要的 .
在VC3上按下后退按钮时,可以使用此代码 . 为此,您需要向VC3的后退按钮添加操作 .
我使用下面的代码从视图控制器堆栈弹出视图 .
这不会给你视图动画问题 . 希望这可以帮助 . 快乐的编码 .
导航到VC3后,从导航控制器的导航堆栈中删除VC2 . 下面是代码,只需在您的情况下编写视图控制器的索引,或者动态使用它 .
self.navigationController?.viewControllers.removeAtIndex("insert here a number")
像其他人说的那样使用 popToRootViewController
但是如果VC1不是你的rootViewController,则在弹出时将此代码添加到VC3
您可以使用以下扩展名直接弹出到任何viewController