如何检测推出的viewcontroller是否再次出现?

时间:2017-06-28 11:53:26

标签: swift uiviewcontroller uinavigationcontroller

  • 假设我有一个推送QRCodeScannerViewcontroller (vcB)的viewcontroller (vcA)。当(vcB)扫描某些内容时,它会推送ResultviewController (vcC)

- 这3个视图连接到UInavigation控制器

- 用户点击(vcC)

上的后退按钮

我的问题是:

1)如何在不改变(vcB)的代码的情况下知道(vcB)是否可见? (vcB)是一个广告

2)我会把这段代码放在哪里?我只能访问(vcA)

我尝试在(vcA)上添加此代码,但没有发生任何事情

override func viewDidDisappear(_ animated: Bool) {

    if (vcB.isViewLoaded && (vcB.view.window != nil)){
        print("vcb did appear!")
    }

}

1 个答案:

答案 0 :(得分:0)

要知道导航堆栈中是否存在cvB类的实例,您可以使用这段代码:

let result = self.navigationController?.viewControllers.filter({
    if let vcB = $0 as? UIViewController { // Replace UIViewController with your class, for example ViewControllerB
        return true
    }
    return false
})

if result.isEmpty {
    print("An instance of vcB's class hasn't been pused before")
} else {
    print("An instance of vcB's class has been pused before")
}