我正在尝试从 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()
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我用 List 替换 VStack 时,它似乎有效。
这是预期的行为还是 iOS 14 上的 SwiftUI 中的错误?我究竟做错了什么?
谢谢
托比亚斯·廷佩
我认为这个问题.sheet()
在同一观点上出现了两次。
由于VStack
是非动态的,我希望 of .sheet
theListRow
和 theVStack
应用于底层的相同构造,就像您在上层调用它两次一样:
TextView("Foo")
.sheet(isPresented: $showA) { Text("A") }
.sheet(isPresented: $showB) { Text("B") } // Does not work, only one sheet is allowed
Run Code Online (Sandbox Code Playgroud)
因此,要么只显示一张表,并在表中包含是否显示“Hello”或“测试主模式”的逻辑,要么使用列表:)
归档时间: |
|
查看次数: |
625 次 |
最近记录: |