我正在尝试显示由模式表触发的警报。这是一个小的演示项目:
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"))
}
}
}
Run Code Online (Sandbox Code Playgroud)
单击“按下”按钮后,会出现一个带有“关闭警报”按钮的模式表。如果按下此按钮,工作表将关闭并且没有任何反应。我希望显示警报。
似乎隐藏工作表的动画导致了这个问题,因为在设置 showSheet = false 后,SwiftUI 似乎并不认为工作表已关闭。出现以下警告支持该理论:
[演示]尝试本<SwiftUI.PlatformAlertController:0x7fbbab012200>上< TtGC7SwiftUI19UIHostingControllerGVS_15ModifiedContentVS_7AnyViewVS_12RootModifier _:0x7fbbaa60b7d0>(距离< TtGC7SwiftUI19UIHostingControllerGVS_15ModifiedContentVS_7AnyViewVS_12RootModifier _:0x7fbbaa60b7d0>),其已经呈现< TtGC7SwiftUI22SheetHostingControllerVS_7AnyView:0x7fbbaa413200>。
您可以使用onDismiss
.
以下是一些基于您希望何时显示警报的示例:
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"))
}
}
}
Run Code Online (Sandbox Code Playgroud)
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"))
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
530 次 |
最近记录: |