作者:ythg | 来源:互联网 | 2023-02-06 06:54
在我的应用程序中,我有三个表视图控制器,然后可能有许多UIViewControllers,如果用户在任何时候按下,每个UIViewControllers都必须返回到第一个表视图控制器.我不希望用户必须回溯可能数百页.这是我有趣的,以确定用户是否按下后退按钮,它的工作原理是打印消息
override func viewWillDisappear(_ animated: Bool) {
if !movingForward {
print("moving back")
let startvc = self.storyboard!.instantiateViewController(withIdentifier: "FirstTableViewController")
_ = self.navigationController!.popToViewController(startvc, animated: true)
}
}
我已经搜索过,到目前为止还没有解决方案.
1> Nirav D..:
popToViewController
不是以你正在尝试的方式工作而是传递一个完整的新引用FirstTableViewController
而不是导航堆栈中的引用.所以你需要遍历navigationController?.viewControllers
并查找FirstTableViewController
然后popToViewController
使用该实例调用FirstTableViewController
.
for vc in (self.navigationController?.viewControllers ?? []) {
if vc is FirstTableViewController {
_ = self.navigationController?.popToViewController(vc, animated: true)
break
}
}
如果你想转移到第一个屏幕,那么你可能正在寻找popToRootViewController
而不是popToViewController
.
_ = self.navigationController?.popToRootViewController(animated: true)