Swift 如何检测推送的viewcontroller是否再次出现? 假设我有一个viewcontroller(vcA),它推动QRCodeScannerViewcontroller(vcB)。当(vcB)扫描某个内容时,它将推送ResultviewController(vcC)

Swift 如何检测推送的viewcontroller是否再次出现? 假设我有一个viewcontroller(vcA),它推动QRCodeScannerViewcontroller(vcB)。当(vcB)扫描某个内容时,它将推送ResultviewController(vcC),swift,uiviewcontroller,uinavigationcontroller,Swift,Uiviewcontroller,Uinavigationcontroller,-这3个视图连接到一个UInavigation控制器 -用户单击(vcC) 我的问题是: 1) 如果不更改(vcB)上的代码,我如何知道(vcB)是否可见(vcB)是一个pod 2) 我将把代码放在哪里?我只能访问(vcA) 我尝试在(vcA)上添加此代码,但什么也没发生 override func viewDidDisappear(_ animated: Bool) { if (vcB.isViewLoaded && (vcB.view.window != nil))

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

-用户单击(vcC)

我的问题是:

1) 如果不更改(vcB)上的代码,我如何知道(vcB)是否可见(vcB)是一个pod

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

我尝试在(vcA)上添加此代码,但什么也没发生

override func viewDidDisappear(_ animated: Bool) {

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

}

要知道导航堆栈中是否存在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")
}

您不能在cvB或vcC中编写代码?我可以,但我不希望更改cvB,因为它是pod。虽然我可以改变vcCMy的目标,但我知道cvB是否出现了。我要把代码放在哪里?放在你想检查的地方。你想在哪里检查?我能把这个放在vcA上吗?在VIEW上会出现吗?是的,你可以这样做。但是,请尝试为该检查选择一个合乎逻辑的位置,这取决于您的应用程序的逻辑。谢谢,在我测试了一些东西之后,我会接受这个答案。