尝试 sheet 上的 expand/collapse 部分时,SwiftUI 应用程序崩溃
SwiftUI app crashes when trying to expand/collapse sections on a sheet
想法是,当用户点击 headers 时,他们会展开以显示控件。
当我展开其中一个部分时崩溃,然后单击 TextField,然后单击不同的部分以使当前部分折叠而另一个部分展开。
注意事项:
- 这只是 'sheet' 的一个问题。如果我通过 NavigationLink 显示 DetailView,它会完美运行
- 仅当我单击 TextField 时才会发生。如果我只是 expand/collapse 个部分 - 一切正常
- 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 中的一个错误
想法是,当用户点击 headers 时,他们会展开以显示控件。
当我展开其中一个部分时崩溃,然后单击 TextField,然后单击不同的部分以使当前部分折叠而另一个部分展开。
注意事项:
- 这只是 'sheet' 的一个问题。如果我通过 NavigationLink 显示 DetailView,它会完美运行
- 仅当我单击 TextField 时才会发生。如果我只是 expand/collapse 个部分 - 一切正常
- 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 中的一个错误