如何覆盖popToRootViewController以追加方法?

时间:2017-09-10 18:25:58

标签: ios swift

我继承UINavigationController并通过其didShow委托,每当新的视图控制器被推入堆栈时调用它,我更新一个名为previousViewController的实例变量(为了能够执行一些自定义工作。)

实例变量:

class SectionNavigationController: UINavigationController {

    var previousViewController: UIViewController?
    ...

更新的代表:

// nav controller delegate method (did show)
func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {

    if currentIndex! > 0 {
        previousViewController = navigationController.viewControllers[currentIndex! - 1]
    }

}


因此,无论何时调用popToRootViewController,顶视图控制器(previousViewController)下面的视图控制器都不会因为此引用而被取消初始化。如何以{em>追加 popToRootViewController的取消初始化方式覆盖previousViewController

1 个答案:

答案 0 :(得分:1)

检查this apple文档

  

您可以通过定义一些来解决强引用周期   类之间的关系作为弱或无主引用而不是   作为强有力的参考。

您应将var声明为weak