我正在使用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()
}
我可以在调试器中看到打印内容,这意味着我的代码已被读取,但没有关闭。
答案 0 :(得分:1)
这是因为您正在使用 checkConnection 方法初始化一个控制器并弹出,但是在 isConnect 方法中您是再次初始化该控制器,该控制器将创建另一个实例相同的控制器,因此先前初始化的控制器不会消失。
尝试将checkConnection方法中的控制器设置为全局控制器,并使用 isConnect 方法关闭该控制器