SwiftUI——警报只显示一次
SwiftUI – Alert is only showing once
我在使用 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")
将被执行并且 错误警报 出现在控制台中,但警报未显示。
有谁知道为什么 Alert 只显示一次?
尝试改用(@Published
属性已经有默认发布者)
class MyModel: ObservableObject {
@Published var isError: Bool = false
public func network() {
Service.call() {
DispatchQueue.main.async {
self.isError = true // << !!! important place to call
}
}
}
}
我在使用 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")
将被执行并且 错误警报 出现在控制台中,但警报未显示。
有谁知道为什么 Alert 只显示一次?
尝试改用(@Published
属性已经有默认发布者)
class MyModel: ObservableObject {
@Published var isError: Bool = false
public func network() {
Service.call() {
DispatchQueue.main.async {
self.isError = true // << !!! important place to call
}
}
}
}