我想在单击第一个警报视图的关闭按钮后立即显示第二个警报视图。
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。 因此,我该怎么做,我只想在单击第一个警报的关闭按钮后弹出第二个警报。 谢谢。
答案 0 :(得分:1)
请尝试以下代码。
使用SwiftUI
连续显示两个警报视图
struct ContentView: View {
@State var showAlert: Bool = false
@State var alertIsVisible: Bool = false
@State var bonusAlertIsVisible: Bool = false
var body: some View {
NavigationView {
Button(action: {
self.displayAlert()
}) {
Text("Hit Me!")
}
.alert(isPresented: $showAlert) { () -> Alert in
if alertIsVisible {
return Alert(title: Text("First alert"), message: Text("\n"), dismissButton:.default(Text("Next Round"), action: {
DispatchQueue.main.async {
self.displayAlert()
}
})
)
}
else {
return Alert(title: Text("Bonus"), message: Text("You've earned 100 points bonus!!"), dismissButton:.default(Text("Close"), action: {
self.showAlert = false
self.bonusAlertIsVisible = false
self.alertIsVisible = false
})
)
}
}
.navigationBarTitle(Text("Alert"))
}
}
func displayAlert() {
self.showAlert = true
if self.alertIsVisible == false {
self.alertIsVisible = true
self.bonusAlertIsVisible = false
}
else {
self.alertIsVisible = false
self.bonusAlertIsVisible = true
}
}
}
答案 1 :(得分:1)
它出现了(经过Xcode 11.2测试):
我找到了@Rohit提出的替代解决方案。在某些情况下,很多警报可能会导致代码更简单。
ORDER BY