gpt4 book ai didi

ios - popToViewController 没有弹出所有的 View Controller

转载 作者:行者123 更新时间:2023-11-28 15:28:54 24 4
gpt4 key购买 nike

所以我有 3 个 View Controller :TableViewController、A 和 B。用户可以从任何 View Controller 导航到任何 View Controller 。

当用户在 A 和 B View Controller 之间来回移动时,我希望将它们推到导航上。堆。当按下“主页”按钮时,我希望使用 popToViewController 而不是 popToRootViewController(出于某些原因)将 View Controller 全部弹出回 TableViewController。

我有部分工作代码弹出上次访问的 View Controller ,但现在所有的都在中间。

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)
}

}

我不确定为什么没有弹出所有 View Controller 。

我用来检查推送和弹出的内容的代码:

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")
}
}

我也在检查内存的增加。

我会在需要时提供更多代码/信息。

如有任何帮助,我们将不胜感激。

最佳答案

您的困惑可能只是您试图“检查”VC 是否“弹出”的方式。

假设你已经走了:

root->TableView->A->B->A->B->B->B->`

此时,唯一可见的 VCA 的最后一个实例。所以当你调用

navController.popToViewController(controller, animated: true)

viewWillDisappear()A 的最后一个实例上调用 - 不会在其他 VC 上调用实例将“消失”,因为它们不可见

如果你想确认堆栈中的其他 VC 正在被“删除”,请将其放入每个 View Controller 中:

deinit() {
print("I'm being removed:", self)
}

问题的另一部分 - 你想在整个过程中制作动画吗?所以你真的会看到风投“走回堆栈”?如果是这样,请按照@FryAnEgg 的链接转到 Completion block for popViewController

关于ios - popToViewController 没有弹出所有的 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44934095/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com