如何解决SwiftUI:导航链接到 TabView 中的 DetailView 崩溃
目前,如果我尝试在 TextField
和 List
中输入嵌套两次的 Detail View
,我的应用程序会崩溃并显示错误:Thread 1: signal SIGABRT
并在调试器 (缩写):
CoreSimulator --- Device: iPhone 8 (---) - Runtime: iOS 14.4 (----) - DeviceType: iPhone 8
AttributeGraph precondition failure: invalid size for indirect attribute: 73 vs 1.
struct RootView {
var body: some View {
TabView {
ListView()
.tag(0)
}
}
}
struct ListView {
@State var isActive = false
var body: some View {
ScrollView {
NavigationView {
NavigationLink(destination: DetailView(),isActive: $isActive)
}
}
}
}
struct DetailView {
...
var body: some View {
TextField("Keyboard appears and the app crashes.",text: $text)
}
}
有没有办法解决这个问题?如果我删除 TabView 那么它就可以正常工作。不过,我需要 TabView,那么有没有办法可以从 TabView 中弹出,然后在 TabView 之外呈现一个详细信息视图?
编辑:使用 UITabViewController
和 UIViewControllerRepresentable
解决了该问题。似乎问题出在 TabView
。
解决方法
我已经通过一些调整测试了您的代码,您使用什么版本的 ios/xcode 似乎可以正常工作?
import SwiftUI
struct RootView: View {
var body: some View {
NavigationView {
TabView {
ListView().tabItem {
Text("test")
}
ListView2().tabItem {
Text("test2")
}
}
}
}
}
struct ListView: View {
@State var isActive = false
var body: some View {
ScrollView {
NavigationLink("test",destination: DetailView(),isActive: $isActive)
}
}
}
struct ListView2: View {
@State var isActive = false
var body: some View {
ScrollView {
NavigationLink("test2",isActive: $isActive)
}
}
}
struct DetailView: View {
@State var text = ""
var body: some View {
TextField("Keyboard appears and the app crashes.",text: $text)
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。