【发布时间】:2020-01-18 13:03:50
【问题描述】:
我对 SwiftUI 警报视图有一个奇怪的问题。在 ObservableObject 中,我执行了一些网络请求,如果出现错误,我将显示警报。这是我的简化模型:
class MyModel: ObservableObject {
let objectWillChange = ObservableObjectPublisher()
@Published var isError: Bool = false
public func network() {
Service.call() {
self.isError = true
DispatchQueue.main.async {
self.objectWillChange.send()
}
}
}
}
Service.call 是我的网络请求的虚拟对象。我的观点如下:
struct MyView: View {
@ObservedObject var model: MyModel
var body: some View {
…
.alert(isPresented: self.$model.isError) {
print("Error Alert")
return Alert(title: Text("Alert"))
}
}
}
在第一次通话时,一切正常并显示警报。对于所有进一步的调用,print("Error Alert") 将被执行,错误警报会出现在控制台中,但不会显示警报。
有人知道为什么警报只显示一次吗?
【问题讨论】: