我试图显示由模式表触发的警报。这是一个小型演示项目:
import SwiftUI
struct ContentView: View {
@State private var showSheet = false
@State private var showAlert = false
var body: some View {
Button("Press") {
showSheet = true
}
.sheet(isPresented: $showSheet) {
Button("Close with alert") {
showSheet = false
showAlert = true
}
}
.alert(isPresented: $showAlert) {
Alert(title: Text("Alert"))
}
}
}
单击“按下”按钮后,将出现一个模式表,其中包含“关闭并警告”按钮。如果按下此按钮,工作表将关闭并且不会发生任何事情。我希望显示警报。
隐藏工作表的动画似乎导致了问题,因为 SwiftUI 在设置 showSheet = false 后似乎并不认为工作表已关闭。出现以下警告支持该理论:
[演示] 尝试演示 上
TtGC7SwiftUI19UIHostingControllerGVS_15ModifiedContentVS_7AnyViewVS_12RootModifier_:
0x7fbbaa60b7d0>(来自
TtGC7SwiftUI19UIHostingControllerGVS_15ModifiedContentVS_7AnyViewVS_12RootModifier_:
0x7fbbaa60b7d0>) 已经呈现
TtGC7SwiftUI22SheetHostingControllerVS_7AnyView:0x7fbbaa413200>。
您可以使用onDismiss
.
以下是一些基于的示例when您想发出警报吗:
-
Always关闭并发出警报:
struct ContentView: View {
@State private var showSheet = false
@State private var showAlert = false
var body: some View {
Button("Press") {
showSheet = true
}
.sheet(isPresented: $showSheet, onDismiss: {
showAlert = true
}) {
Button("Close") {
showSheet = false
}
}
.alert(isPresented: $showAlert) {
Alert(title: Text("Alert"))
}
}
}
- 关闭并发出警报仅单击按钮:
struct ContentView: View {
@State private var showSheet = false
@State private var showAlert = false
@State private var closeSheetWithAlert = false
var body: some View {
Button("Press") {
showSheet = true
closeSheetWithAlert = false
}
.sheet(isPresented: $showSheet, onDismiss: {
showAlert = closeSheetWithAlert
}) {
Button("Close") {
closeSheetWithAlert = true
showSheet = false
}
}
.alert(isPresented: $showAlert) {
Alert(title: Text("Alert"))
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)