gpt4 book ai didi

ios - 如何使用 SwiftUI 连续呈现两个警报 View

转载 作者:行者123 更新时间:2023-12-01 17:35:37 25 4
gpt4 key购买 nike

单击第一个警报 View 的关闭按钮后,我想立即显示第二个警报 View 。

Button(action: {
self.alertIsVisible = true
}) {
Text("Hit Me!")
}
.alert(isPresented: $alertIsVisible) { () -> Alert in
return Alert(title: Text("\(title)"), message: Text("\n"), dismissButton:.default(Text("Next Round"), action: {
if self.score == 100 {
self.bonusAlertIsVisible = true
}
.alert(isPresented: $bonusAlertIsVisible) {
Alert(title: Text("Bonus"), message: Text("You've earned 100 points bonus!!"), dismissButton: .default(Text("Close")))}
})
)

但是,它给了我一个错误“Alert.Button”不能转换为“Alert.Button?”
如果我将此段置于dismissButton 的范围之外,它将覆盖之前的.alert。
那么我该怎么做,我只想在单击第一个警报的关闭按钮后弹出第二个警报。
谢谢。

最佳答案

它出现(使用 Xcode 11.2 测试):

  • 虽然没有记录,但不允许添加多个
    一个 View 构建器序列中的 .alert 修饰符 - 仅适用于最新版本
  • 不允许将 .alert 修饰符添加到 EmptyView,它不起作用
    在所有

  • 我找到了@Rohit 提出的替代解决方案。在某些情况下,有很多警报,这可能会导致代码更简单。
    struct TestTwoAlerts: View {
    @State var alertIsVisible = false
    @State var bonusAlertIsVisible = false

    var score = 100
    var title = "First alert"

    var body: some View {
    VStack {
    Button(action: {
    self.alertIsVisible = true
    }) {
    Text("Hit Me!")
    }
    .alert(isPresented: $alertIsVisible) {
    Alert(title: Text("\(title)"), message: Text("\n"), dismissButton:.default(Text("Next Round"), action: {
    if self.score == 100 {
    DispatchQueue.main.async { // !! This part important !!
    self.bonusAlertIsVisible = true
    }
    }
    }))
    }
    Text("")
    .alert(isPresented: $bonusAlertIsVisible) {
    Alert(title: Text("Bonus"), message: Text("You've earned 100 points bonus!!"), dismissButton: .default(Text("Close")))
    }
    }
    }
    }

    struct TestTwoAlerts_Previews: PreviewProvider {
    static var previews: some View {
    TestTwoAlerts()
    }
    }

    关于ios - 如何使用 SwiftUI 连续呈现两个警报 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58834390/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com