簡體   English   中英

SwiftUI:在 iOS 14 上無法顯示來自 VStack 項目的工作表

[英]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是非動態的,我希望.sheetListRowVStack應用於引擎蓋下的相同構造,就像您在上層調用它兩次一樣:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM