swift - Swift:委托方法不会触发
问题描述
我试图根据用户的设备是否在线来触发另一个视图控制器中的方法。
该方法从ConnectionService.swift调用,设置如下:
protocol ConnectionServiceDelegate: class {
func didChangeStatus()
}
weak var delegate: ConnectionServiceDelegate?
func updateConnectionStatus(_ status: Connectivity.Status) {
switch status {
case .connected, .connectedViaWiFi, .connectedViaCellular:
updateLabelWith(connectionStatus: .connected)
case .notConnected, .connectedViaWiFiWithoutInternet, .connectedViaCellularWithoutInternet:
updateLabelWith(connectionStatus: .disconnected)
}
delegate?.didChangeStatus()
}
我试图触发该方法的 VC 在 viewDidLoad() 中设置了这个:
override func viewDidLoad() {
super.viewDidLoad()
stackView.customPadding(BaseFlightLookupViewController.submitButtonVerticalPadding, after: date)
connectionService = ConnectionService()
connectionService?.delegate = self
}
然后在扩展中:
extension RetrieveCompletedOrderViewController: ConnectionServiceDelegate {
func didChangeStatus() {
print("Delegate triggered")
}
}
现在我知道委派类是正确的,但为什么我在这个 RetrieveCompletedOrderViewController 中的方法没有被触发?
编辑:
updateConnectionStatus 调用如下:
private func prepareConnectivityListener() {
let connectivityChanged: (Connectivity) -> Void = { [weak self] connectivity in
self?.updateConnectionStatus(connectivity.status)
}
connectivity.whenConnected = connectivityChanged
connectivity.whenDisconnected = connectivityChanged
connectivity.startNotifier(queue: queue)
}
这个方法在这里调用:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
DispatchQueue.main.async { [weak self] in
self?.prepareUI()
}
prepareConnectivityListener()
return true
}
解决方案
推荐阅读
- javascript - 如果查询为真,则禁用字段
- bash - 每次安装时都需要手动创建符号链接
- python - 如何将机器学习分类方法应用于一维时间序列数据
- java - 为什么 executeUpdate() 函数不起作用?给出在普通项目而不是基于 maven 的项目中解决的步骤
- c# - IX509PrivateKey::C# 中的导出方法
- angular - Azure 应用服务 500 错误超时 Http Post
- jquery - 使用 JQuery 更改后如何从表中选择第一行?
- javascript - jQuery on click 循环通过相同的 .wrappers 中的图像独立
- android - 如何检查我的应用程序是否正在android中调试?
- asp.net - asp.net 样板 (ABP) OdataController 和 AddODataQueryFilter