SwiftUI:重置.sheet(_:onDismiss :)的状态

时间:2019-08-21 19:59:21

标签: swift state swiftui

我已经在一个视图上实现了onTapGesture,并使用.sheet呈现了另一个视图。

当用户使用向下滑动手势关闭工作表时,我将@State改回了false。 (使用.sheet(_: onDismiss:)

当我第一次点击卡片时,便会显示这张纸。

但是,在关闭.sheet并再次点击Card()之后,该表单不会显示。

我不确定为什么它不起作用:我添加了2个prints语句来检查@State的值,并在我撤消false时将其设置回.sheet

struct CardView: View {

    @EnvironmentObject var bixiModel: BixiStationCombinedListViewModel

    @State var isModalOpen: Bool = false

    var station: BixiStationCombinedViewModel

    var body: some View {

        ZStack(alignment: .leading){

            Card(station: station)

        }

        .onTapGesture {
            self.isModalOpen = true
            print(self.isModalOpen)

// Prints: true

        }
        .sheet(isPresented: self.$isModalOpen, onDismiss: {
            self.isModalOpen = false
            print(self.isModalOpen)

// Prints: false

            })
            {
                BixiStationDetailView(station: self.station)
                    .environmentObject(self.bixiModel)
        }
    }
}

知道为什么我的实现无法正常工作吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

请注意:iOS 13.1 Beta 1,Xcode 11 Beta 7已修复!

答案 1 :(得分:0)

可能是因为您在.sheet中有List。如果是这样,那么这是一个已知的错误,有望得到修复。在此期间,您必须将.sheetList中移出,它应该会按预期工作。