所以我有 3 个视图控制器:TableViewController、A 和 B。用户可以从任何视图控制器导航到任何视图控制器。
当用户在 A 和 B 视图控制器之间来回移动时,我希望它们被推送到导航上。堆。当按下“主页”按钮时,我希望使用 popToViewController 将视图控制器全部弹出回 TableViewController,而不是 popToRootViewController(出于某种原因)。
我有部分工作代码可以弹出最后访问的视图控制器,但现在所有代码都在两者之间。
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if indexPath.row == 0 {
if let navController = self.navigationController {
for controller in navController.viewControllers {
if controller is TableViewController {
navController.popToViewController(controller, animated: true)
break
}
}
}
} else {
let vcName = identities[indexPath.row]
let viewController = storyboard?.instantiateViewController(withIdentifier: vcName)
self.navigationController?.pushViewController(viewController!, animated: true)
}
}
我不确定为什么没有弹出所有视图控制器。
我用来检查推送和弹出内容的代码:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(true)
if self.isMovingToParentViewController {
print("A is pushed")
}
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(true)
if self.isMovingFromParentViewController {
print("A is popped")
}
}
我也在检查内存的增加。
我将在需要时提供更多代码/信息。
任何帮助将不胜感激。