NavigationView中的操作表似乎有错误

时间:2019-10-06 13:29:28

标签: swiftui ios-navigationview

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

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

有效!

但是,如果我将其放在NavigationView中,则会出现该错误!当我点击ActionSheet时,Cancel将再次弹出。

enter image description here

2 个答案:

答案 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

如果我将ActionSheetModal放在NavigationView外面,那么效果很好!