如何解决尝试在工作表上展开/折叠部分时,SwiftUI应用程序崩溃
这个想法是,当用户单击标题时,它们会展开以显示控件。
当我展开其中一个部分,然后在TextField中单击,然后单击另一部分以使当前一个折叠,而另一部分展开时,它崩溃。
注意事项:
- 这只是“工作表”的问题。如果我通过NavigationLink呈现DetailView,则效果很好
- 仅当我单击TextField时才会发生。如果我只是展开/折叠部分-一切正常
- 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登陆到这里,最终和这里SwiftUI iOS app crashes when state change causes keyboard to resign as first responder while in a sheet一样是一个问题
但是,在我的情况下,堆栈无用地是空的,只有经过无数次尝试,我才得到除通用“主”事件循环之外顶部为def tiene_uno(expression):
return '1' in str(expression)
的堆栈。当然,使用谷歌搜索就立即产生了上面的链接
将此情况报告给了Apple。显然这是SwiftUI中的错误
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。