一旦View Controller离开视图堆栈,是否可以调用函数?

问题描述

如果

ViewDiddisapear和ViewWilldisappear仍在另一个View Controller上方时被调用(例如,将View Controller推到顶部)。是否只有在将视图控制器从导航堆栈中删除后才调用函数?向后退按钮添加功能可以正常工作,但是如果用户决定使用边缘平移手势关闭视图怎么办?是否有一个动作可以说明这两个事件?

解决方法

是的,我可以想到几种方法来实现这一目标

一种选择是将一些代码添加到UIViewController的dealloc方法中。

如果您不希望视图控制器控制器在离开堆栈时被释放,则还可以为UINavigationController设置UINavigationControllerDelegate并进行定义

func navigationController(_ navigationController: UINavigationController,didShow viewController: UIViewController,animated: Bool) {
  guard let poppedViewController =
        navigationController.transitionCoordinator?.viewController(forKey: .from) 
  <Do something with the popped VC>