【发布时间】:2021-07-11 09:30:50
【问题描述】:
以下代码显示了一个“删除文件”按钮。当用户按下它时,会出现一个确认警报对话框。当用户在第一个对话框上按“删除”时,我想显示第二个警报对话框,确认文件已被删除。但是,它从未出现,即使调试代码确认第二个“return Alert...”语句实际上正在按预期执行。有没有办法让第二个警报也出现?
import SwiftUI
enum alertShownType {
case alertNone, alertDeleteFile,alertFileDeleted
}
struct ContentView: View {
@State var showingAlert = false
@State var alertShown: alertShownType = alertShownType.alertNone
var body: some View {
Button(action: {
self.alertShown = alertShownType.alertDeleteFile
self.showingAlert = true
})
{
Text("Delete file")
}.padding(EdgeInsets(top: 0, leading: 0, bottom: 10, trailing:0))
.alert(isPresented: $showingAlert, content: {
if (alertShown == alertShownType.alertDeleteFile)
{
return Alert(title: Text("Delete file"),
message: Text("Are you sure?"),
primaryButton: .destructive(Text("Delete")) {
// Delete the file
....
// Show the next alert
alertShown = alertShownType.alertFileDeleted
showingAlert = true
},
secondaryButton: .cancel())
}
else // alertFileDeleted
{
return Alert(title: Text("File deleted"), message:
Text("Done!"),
dismissButton: .default(Text("OK")))
}
})
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
【问题讨论】:
-
谢谢,但这无济于事。我已经可以使用枚举值从我的应用程序的单个页面显示多个不同的警报。问题是当按下主按钮时,如何在在第一个警报的操作中显示第二个警报。
标签: swiftui