簡體   English   中英

SwiftUI 嘗試展開/折疊工作表上的部分時應用程序崩潰

[英]SwiftUI app crashes when trying to expand/collapse sections on a sheet

這個想法是,當用戶點擊標題時,他們會展開並顯示控件。

當我展開其中一個部分時,它會崩潰,然后單擊 TextField,然后單擊不同的部分以使當前部分折疊,而另一個部分展開。

注意事項:

  1. 這只是“工作表”的問題。 如果我通過 NavigationLink 顯示 DetailView,它會完美運行
  2. 僅當我單擊 TextField 時才會發生。 如果我只是展開/折疊部分 - 一切正常
  3. Xcode 11.6,定位並在 iOS 13.6 上運行

我的代碼有什么問題? 或者它是 SwiftUI 中的錯誤?

我將有問題的代碼提煉成最小的工作示例

struct DetailView: View {
    @State var name: String = "Default name"
    
    @State var location: String = "Default location"
    
    @State var expanded : Int = -1
    
    var body: some View {
        VStack {
            Button (action: {self.expanded = 0}) {
                HStack {
                    Text(self.name).font(.caption)
                    Spacer()
                    Image (systemName: "chevron.right")
                }
            }
            if self.expanded == 0 {
                TextField ("Enter name", text: self.$name)
            }
            
            Button (action: {self.expanded = 1}) {
                HStack {
                    Text(self.location).font(.caption)
                    Spacer()
                    Image (systemName: "chevron.right")
                }
            }
            if self.expanded == 1 {
                TextField ("Enter location", text: self.$location)
            }
            Spacer()
        }.padding()
    }
 }


 struct ContentView: View {
    @State var showDetail = false
    
    var body: some View {
        NavigationView {
            
            Button ("Detail") {
                self.showDetail = true
            }.sheet(isPresented: self.$showDetail, content: {DetailView()})
            
        }
    }
}

如果有人從谷歌登陸這里,它最終會成為與這里相同的問題SwiftUI iOS 當 state 更改導致鍵盤在工作表中退出作為第一響應者時應用程序崩潰

然而,在我的例子中,堆棧毫無用處是空的,只有在無數次嘗試之后,我才得到一個除了通用的“主”事件循環之外還有ViewRendererHost.render的堆棧。 果然谷歌搜索它立即產生了上面的鏈接

向 Apple 報告了此事。 這顯然是 SwiftUI 中的錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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