我使用以下按钮在SwiftUI中切换工作表

Button(action: {
                    self.statusPopoverIsShown.toggle()
                })
因此出现以下工作表
.sheet(isPresented: self.$popoverIsShown) {
                    RandomSheet(popoverIsShown: self.$popoverIsShown)
}
然后,我在RandomSheet中有一个按钮来关闭工作表(将popoverIsShown设置为false)。一切正常。
但是,当我开始在拆分屏幕中使用该应用程序或以某种方式更改大小类时,SwiftUI会将工作表转换为类似iPhone的全屏工作表,并且关闭按钮/绑定不再起作用。
有什么解决方案可以避免这种情况并保持绑定稳定吗?

最佳答案

以下适用于任何尺寸类别的更改。经过Xcode 12 / iOS 14测试

struct TestSheet: View {
    @State private var popoverIsShown = false
    var body: some View {
        Button("Show Sheet") {
            self.popoverIsShown = true
        }
        .sheet(isPresented: self.$popoverIsShown) {
            RandomSheet(popoverIsShown: self.$popoverIsShown)
        }
    }
}

struct RandomSheet: View {
    @Binding var popoverIsShown: Bool
    var body: some View {
        Button("Close") { self.popoverIsShown = false }
    }
}

关于ios - SWIFTUI:更改ScreenSize类后无法关闭工作表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63070214/

10-13 06:35