有没有办法找出视图控制器是不是从导航堆栈中弹出?
Posted
技术标签:
【中文标题】有没有办法找出视图控制器是不是从导航堆栈中弹出?【英文标题】:Is there a way to find out whether a view controller is popped off the navigation stack?有没有办法找出视图控制器是否从导航堆栈中弹出? 【发布时间】:2016-12-14 14:37:25 【问题描述】:我试图检测视图控制器何时从导航堆栈中弹出,以某种方式我在堆栈的下一层有对控制器的引用(当前使用 Swift 3)。谢谢
【问题讨论】:
【参考方案1】: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 数组来完成。 我不相信导航控制器和他们的孩子的父/子关系被记录,所以我不会指望它。在未来的某些操作系统版本中,实施细节可能会发生变化,并破坏您的代码。 同意,我已经实现了您的解决方案并将其添加到我的代码 sn-ps 中。谢谢! 如果我的回答解决了你的问题,你应该接受它。支持是可选的,但值得赞赏。 :)以上是关于有没有办法找出视图控制器是不是从导航堆栈中弹出?的主要内容,如果未能解决你的问题,请参考以下文章