SwiftUI:从 VStack 项目显示工作表在 iOS 14 上不起作用

标签 swift swiftui

我正在尝试从 VStack 中的一个项目呈现一张工作表。以下代码适用于 iOS 13.7,但不适用于 iOS 14:

import SwiftUI

struct ListRow: View {
    @State var showingSheet: Bool = false
    var body: some View {
        Button(action: {
            self.showingSheet = true
        }) {
            Text("Tap me")
        }.sheet(isPresented: self.$showingSheet, content: {
            NavigationView {
                Text("Hello")
            }
        })
    }
}

struct ListRow_Previews: PreviewProvider {
    static var previews: some View {
        ListRow()
    }
}



struct ContentView: View {
    @State private var showingModal: Bool = false
    var body: some View {
        NavigationView{
            VStack {
                ForEach (0..<10) {_ in
                    ListRow().padding()
                }
            }.navigationBarItems(leading: Button(action: {
                self.showingModal = true
            }, label: {
                Text("TAP")
            })).sheet(isPresented: self.$showingModal, content: {
                Text("Testing main modal")
            })
            
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
但是,当我用 List 替换 VStack 时,它似乎有效。
这是预期的行为还是 iOS 14 上的 SwiftUI 中的错误?我究竟做错了什么?
谢谢
托比亚斯·廷佩

最佳答案

我认为问题在于 .sheet()在同一 View 上两次。
VStack是非动态的,我希望 .sheetListRowVStack应用于引擎盖下的相同构造,就像您在上层调用它两次一样:

TextView("Foo")
.sheet(isPresented: $showA) { Text("A") }
.sheet(isPresented: $showB) { Text("B") } // Does not work, only one sheet is allowed
因此,要么您只显示一张工作表并在工作表中包含是否显示“Hello”或“测试主模式”的逻辑,或者您使用列表:)

关于SwiftUI:从 VStack 项目显示工作表在 iOS 14 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63987794/

相关文章:

core-data - SwiftUI - 如何在 init 中使用 fetchRequest 更新数据

swift - 在 Xcode 12 中使用 @main

ios - 将本地通知角标(Badge)计数增加到 1

ios - Swift Charts : . chartYScale 似乎只能以 100 为增量工作?

swiftui - 当另一个 View 处于事件状态时如何模糊背景?

ios - swift Realm : can you observe when a Results object changes?

ios - UITableView 上的 JSON 数据

ios - CGRect 放大动画在 Xcode 10 中不起作用?

ios - 当我收到推送通知时收到系统警告

ios - 快速按下按钮时填充按钮图标