使用 SwiftUI 在条件内显示警报
Posted
技术标签:
【中文标题】使用 SwiftUI 在条件内显示警报【英文标题】:Display an Alert inside a conditional with SwiftUI 【发布时间】:2019-09-01 04:25:12 【问题描述】:我知道Alert
可以作为Button
的函数呈现,但Alert
可以在条件内呈现吗?如:
struct ContentView: View
var body: some View
Text("Hello World!")
if isValid
//present alert
let alert = UIAlertController(title: "My Title", message: "This
is my message.", preferredStyle: UIAlertController.Style.alert)
alert.addAction(UIAlertAction(title: "OK", style:
UIAlertAction.Style.default, handler: nil))
self.present(alert, animated: true, completion: nil)
这样我就明白了
'ContentView' 类型的值没有成员'present'
【问题讨论】:
【参考方案1】:我不确定你为什么要使用 UIKit。下面是一个示例,说明当某物更改标志时如何显示警报。在这种情况下,一个两秒的计时器:
import SwiftUI
class MyModel: ObservableObject
@Published var isValid: Bool = false
init()
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(2))
self.isValid = true
struct ContentView: View
@ObservedObject var model: MyModel = MyModel()
var body: some View
VStack
Text("Some text")
Text("Some text")
Text("Some text")
Text("Some text")
.alert(isPresented: $model.isValid, content:
Alert(title: Text("Title"),
message: Text("Message"),
dismissButton: .default(Text("OK")) print("do something") )
)
【讨论】:
我一直在尝试做同样的事情,除了在一个不同的 swift 类和 final 类中。当我直接调用绑定时,ui不会改变(没有警报)但是当我在视图中创建一个状态时,并且在我的按钮操作中将状态分配给observerdObj中的绑定,它可以工作,但是我认为这不是用例。有什么建议吗?以上是关于使用 SwiftUI 在条件内显示警报的主要内容,如果未能解决你的问题,请参考以下文章