0
我试图检测何时一个视图控制器从导航堆栈弹出,以一种方式,我有一个对堆栈的下一层(目前与Swift 3一起工作)的控制器的引用。谢谢有没有办法找出视图控制器是否从导航堆栈中弹出?
我试图检测何时一个视图控制器从导航堆栈弹出,以一种方式,我有一个对堆栈的下一层(目前与Swift 3一起工作)的控制器的引用。谢谢有没有办法找出视图控制器是否从导航堆栈中弹出?
UINavigationController
有一个属性viewControllers
包含当前在堆栈上的视图控制器的数组。你可以得到视图控制器的数组,然后从该数组中获取倒数第二个视图控制器:
guard let navController = self.navigationController else {
print("We are not part of a navigation stack!")
return
}
let stack = navController.viewControllers
let stackCount = stackCount
if stackCount > 1 {
let nextVC = viewControllers[stackCount - 2]
//nextVC now contains the view controller one down from the current VC
} else {
//We are the root view controller
}
啊,得到它的工作,谢谢。只是想通过调用willmovetoparent和访问viewcontrollers数组也可以做到这一点。 –
我不相信导航控制器和他们的孩子的父母/孩子的关系是记录在案的,所以我不会指望它。在将来的OS发行版中,实现细节可能会从您下面更改并破坏您的代码。 –
同意,我已经实施您的解决方案并将其添加到我的代码片段。谢谢! –