0

我做了一些测试。如果我只是做一个这样的按钮:

Button(action: {
    self.showActionSheet = true
}) {
    Text("Click")
}.actionSheet(isPresented: $showActionSheet) {
    ActionSheet(title: Text("This is a test"))
}

有用!

但是如果我把它放进去NavigationView,就会出现错误!当ActionSheet我单击 时会再次弹出Cancel

在此处输入图像描述

4

2 回答 2

1

在 SwiftUI 中,视图是状态的函数,因此如果链接到模式、操作表或出现的警报的标志未设置回 false,则叠加层将继续显示。当用户关闭操作表时,您的 ContentView 会重新绘制,并且因为 showActionSheet 仍然为真,它会再次显示。

行动单

.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") }
于 2019-10-06T17:44:26.430 回答
0

我在 Swift 论坛上发布我的问题并收到答案。

https://forums.swift.org/t/actionsheet-and-modal-seems-have-bug-in-navigationview/29590

如果我把ActionSheetor放在Modal外面NavigationView,它就完美了!

于 2019-10-09T02:14:47.720 回答