繁体   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