如何关闭另一个ViewController的PopViewController

时间:2018-11-12 06:41:36

标签: ios swift

我正在使用ashleymills / Reachability来检查用户是否已连接到互联网,如果没有,我想显示一个弹出窗口,如果有互联网连接,我希望弹出窗口消失。 第一部分很简单,我能够做到,但是当有互联网连接时,我无法关闭弹出窗口

主视图:

 func checkConnection() {
        let VC = self.getStoryBoard().instantiateViewController(withIdentifier: "checkConnection") as! checkConnection
        VC.checkConnectivity = self
        self.showPopUp(VC, parent: self)
    }
       func isConnect(){
     let VC = self.getStoryBoard().instantiateViewController(withIdentifier: "checkConnection") as! checkConnection
    VC.checknotConnectivity = self
    VC.dismissVC()
}

    @objc func reachabilityChanged(note: Notification) {
        let reachability = note.object as! Reachability
        switch reachability.connection {
        case .wifi:
           isConnect()
        case .cellular:
            isConnect()
        case .none:
         checkConnection()
        }
    }

弹出视图

var checkConnectivity : checkConnectivity?
 func dismissVC() {
       // self.dismiss(animated: false, completion: nil)
        print("dismissVC")
    }

protocol checkConnectivity {
    func isConnect()
    func checkConnection()
}

我可以在调试器中看到打印内容,这意味着我的代码已被读取,但没有关闭。

1 个答案:

答案 0 :(得分:1)

这是因为您正在使用 checkConnection 方法初始化一个控制器并弹出,但是在 isConnect 方法中您是再次初始化该控制器,该控制器将创建另一个实例相同的控制器,因此先前初始化的控制器不会消失。

尝试将checkConnection方法中的控制器设置为全局控制器,并使用 isConnect 方法关闭该控制器