Swift 我想把func internetChanged放在另一个文件中。(关于可达性)

Swift 我想把func internetChanged放在另一个文件中。(关于可达性),swift,reachability,Swift,Reachability,我有很多viewController将使用可达性, 所以我想把另一个文件, 这是我的密码 func internetConnect() { NotificationCenter.default.addObserver(self, selector: #selector(internetChanged), name: Notification.Name.reachabilityChanged, object: reachability) do{ try reacha

我有很多viewController将使用可达性, 所以我想把另一个文件, 这是我的密码

func internetConnect() {
    NotificationCenter.default.addObserver(self, selector: #selector(internetChanged), name: Notification.Name.reachabilityChanged, object: reachability)
    do{
        try reachability.startNotifier()
    }catch{
        print("could not start reachability notifier")
    }
}

@objc func internetChanged(note: Notification) {
    let reachability = note.object as! Reachability
    if reachability.connection != .none{
        DispatchQueue.main.async {
            self.internetLabel.isHidden = true
        }
    }else{
        DispatchQueue.main.async {
            self.internetLabel.isHidden = false
        }
    }
}
但是如果我把另一个文件放进去, 它抓不住标签, 如果我

func internetConnect(label:UILabel) {
    NotificationCenter.default.addObserver(self, selector: #selector(internetChanged), name: Notification.Name.reachabilityChanged, object: reachability)
    do{
        try reachability.startNotifier()
    }catch{
        print("could not start reachability notifier")
    }
}
标签还是放不进去

selector: #selector(internetChanged)

假设第一个文件中的视图控制器名称为
ViewController1

如果不在
扩展ViewController1{…}
中添加此函数,则对于选择器,需要显式指定此方法所在的视图控制器


因此,如果
internetChanged
位于
ViewController1
中,那么要从另一个文件中使用它,请使用
#选择器(ViewController1.internetChanged)

这个问题并不清楚,但您可以为所有ViewController1使用一个子类,并在其中添加连接方法。在使用完控制器后,不要忘记移除观察者