我做了一些测试。如果我只是按下这样的按钮:
Button(action: {
self.showActionSheet = true
}) {
Text("Click")
}.actionSheet(isPresented: $showActionSheet) {
ActionSheet(title: Text("This is a test"))
}
有效!
但是,如果我将其放在NavigationView
中,则会出现该错误!当我点击ActionSheet
时,Cancel
将再次弹出。
答案 0 :(得分:1)
在SwiftUI中,视图是状态的函数,因此,如果您链接到模态,动作表或警报的标志未设置为false,则覆盖将继续显示。当用户关闭操作表时,您的ContentView将被重绘,并且由于showActionSheet仍然为true,因此它会再次显示。
ActionSheet
.actionSheet(isPresented: $showActionSheet) {
ActionSheet(title: Text("This is a test"),
buttons: [ActionSheet.Button.cancel({
self.showActionSheet = false })])
}
模式
.sheet(item: $showModal,
onDismiss: {
self.showModal = false
}) { Text("Modal") }
答案 1 :(得分:0)
我在Swift论坛上发布我的问题并收到答案。
https://forums.swift.org/t/actionsheet-and-modal-seems-have-bug-in-navigationview/29590
如果我将ActionSheet
或Modal
放在NavigationView
外面,那么效果很好!