尝试 sheet 上的 expand/collapse 部分时,SwiftUI 应用程序崩溃

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

想法是,当用户点击 headers 时,他们会展开以显示控件。

当我展开其中一个部分时崩溃,然后单击 TextField,然后单击不同的部分以使当前部分折叠而另一个部分展开。

注意事项:

  1. 这只是 'sheet' 的一个问题。如果我通过 NavigationLink 显示 DetailView,它会完美运行
  2. 仅当我单击 TextField 时才会发生。如果我只是 expand/collapse 个部分 - 一切正常
  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()})
            
        }
    }
}

如果有人从 google 登陆这里,它最终会成为与这里相同的问题

然而,在我的例子中,堆栈毫无用处是空的,只有在无数次尝试之后,我才得到一个除了通用 'main' 事件循环之外在顶部有 ViewRendererHost.render 的堆栈。果然谷歌搜索它立即产生了上面的 link

已将此事报告给 Apple。这显然是 SwiftUI 中的一个错误