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

SwiftUI: reset state for .sheet(_: onDismiss:)

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

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

我第一次点击卡片时,会出现 sheet。

然而,在关闭 .sheet 并再次点击 Card() 后,sheet 不会出现。

我不确定它为什么不起作用:我添加了 2 个打印语句来检查 @State 的值,当我关闭 .sheet 时它被设置回 false

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)
        }
    }
}

知道为什么我的实施不起作用吗?

谢谢!

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

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