ios - SWIFTUI:更改 ScreenSize 类后无法关闭工作表

标签 ios swift swiftui

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

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

最佳答案

以下适用于任何大小类更改。使用 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/

相关文章:

ios - 如何使用 Swift 在半横幅 View 上创建 UITableview 第一个索引单元格显示?

自 SDK 8 更新以来,iOS 8 UIApplicationMain 崩溃

ios - 当应用程序进入前台时不要恢复 MPMoviePlayerController

swift - 通过 NSMenuItem 触发操作

ios - Swift 数组性能问题?

swift - 如何从解析中获取createdAt并将其附加到数组 - swift

SwiftUI 导出或共享文件

objective-c - Apple 审批团队的崩溃日志

ios - 旋转设备后动画点会重新定位

youtube - SwiftUI中的AVPlayer