[英]SwiftUI: Presenting sheet from VStack item doesn't work on iOS 14
我正在嘗試從 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()
}
}
但是,當我用列表替換 VStack 時,它似乎可以工作。
這是 iOS 14 上 SwiftUI 中的預期行為還是錯誤? 我究竟做錯了什么?
謝謝
托比亞斯·廷佩
我認為問題在於在同一視圖中兩次呈現.sheet()
。
由於VStack
是非動態的,我希望.sheet
的ListRow
和VStack
應用於引擎蓋下的相同構造,就像您在上層調用它兩次一樣:
TextView("Foo")
.sheet(isPresented: $showA) { Text("A") }
.sheet(isPresented: $showB) { Text("B") } // Does not work, only one sheet is allowed
因此,要么只顯示一張工作表並在工作表中有邏輯是顯示“Hello”還是“測試主模式”,要么使用列表 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.