我有很多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)
答案 0 :(得分:0)
假设第一个文件中的视图控制器名称为ViewController1
。
如果您不在extension ViewController1 { ... }
中添加此功能-那么对于选择器,您需要明确指定此方法所在的视图控制器。
因此,如果internetChanged
在ViewController1
中,则要从另一个文件中使用它-请使用#selector(ViewController1.internetChanged)
答案 1 :(得分:0)
这个问题尚不清楚,但是您可以为所有ViewController使用子类,并在其中添加连接方法。使用完控制器后,别忘了删除观察者。