swift - 我想把 func internetChanged 放在另一个文件中。(关于可达性)
问题描述
我有很多 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
}
}
}
但是如果我放入另一个文件,它就无法捕捉到标签,如果我 uesd
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
.
如果您未添加此功能extension ViewController1 { ... }
- 那么对于选择器,您需要显式指定此方法所在的视图控制器。
所以如果internetChanged
在ViewController1
,那么从另一个文件中使用它 - 使用#selector(ViewController1.internetChanged)
推荐阅读
- python - Spotipy - 错误请求遵循文档示例
- c# - 你如何在 C# 中以 surd 形式留下根?
- javascript - 如何访问此 JSON 中的“订单”(名称中带有分号)?
- javascript - 最后我无法按下关闭按钮
- assembly - 说明同时表示数据风险和控制风险的代码?
- javascript - 保护 HTTP 电子邮件 API
- android - 使用可在 android 中滚动的集合视图单元格构建带有表格视图单元格的表格视图
- node.js - 在 Heroku 中升级 cedar-14 堆栈堆栈
- javascript - 使用材质 UI 的问题
用于两列布局 - java - 将java数组元素与输入字符串进行比较