基本上,我有3个视图控制器,A,B和C.A和B都有一个后退按钮,当用户向后导航时,它会将顶视图控制器弹出堆栈.但是,一旦用户将其转到C,就没有选项可以倒退,我想在发生这种情况时将A和B从堆栈中弹出而不实际向后导航到A和B,因为这会导致其他地方的后退按钮出现问题应用程序,因为堆栈上有剩余的元素.你怎么建议这样做?
我不想尝试导航回弹出的视图控制器.
您可以设置自己的viewControllers属性,navigationController如果您想为该过渡设置动画,也可以.
navigationController?.viewControllers = []
navigationController?.setViewControllers([], animated: true)
在你的例子中,当你到达C时,你就拥有了
navigationController?.viewControllers = [self]
一旦你到达C,它就会从堆栈中删除A和B ..你可能必须把它放进去,viewDidAppear但要确保你只做一次,除非你希望它每次C最终在屏幕上冲洗堆栈.
var initialLoad:Bool = true
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
if initialLoad {
initialLoad = false
navigationController?.viewControllers = [self]
}
}
Run Code Online (Sandbox Code Playgroud)
或者,当您即将推送到C时,您可以尝试而不是 pushViewController
let cViewController = CViewController()
navigationController?.setViewControllers([cViewController], animated: true)
Run Code Online (Sandbox Code Playgroud)
而且我相信会推动你前进,然后从堆栈中移除A和B. 有时候取决于堆栈的当前状态,它会为pop提供动画
| 归档时间: |
|
| 查看次数: |
2474 次 |
| 最近记录: |