如何检测popViewController func覆盖中弹出哪个ViewController?

时间:2017-08-25 11:01:56

标签: ios swift uinavigationcontroller

我已经将 UINavigationController 转换为符合我的需求和用例。为了检测后退操作,我有一个在所需操作上正确调用的覆盖方法:

var popViewController: ((UIViewController) -> Void)?

    override func popViewController(animated: Bool) -> UIViewController? {
        return super.popViewController(animated: animated)
    }

我想检查当前正在弹出哪个VC,以便进一步比较它以评估一些属性。 我尝试的第一件事是添加 var ,它将在此覆盖方法中更改。

var popViewController: ((UIViewController) -> Void)?

但我不知道应该做些什么。 这有可能吗?

2 个答案:

答案 0 :(得分:2)

根据文档,在func popViewController(animated: Bool)上调用UINavigationController的结果会返回弹出的控制器(如果有的话)。

https://developer.apple.com/documentation/uikit/uinavigationcontroller/1621886-popviewcontroller

答案 1 :(得分:2)

我不明白为什么你有一个闭包类型的变量,你可以检查在覆盖方法中正在弹出的视图控制器,而不需要任何存储的属性:

override func popViewController(animated: Bool) -> UIViewController? {
    let popVC = super.popViewController(animated: animated) // this is the view controller that will be popped
    // Do what ever check you want to do here
    return popVC
}