You need to enable JavaScript to run this app. SwiftUI TabView内NavigationLink跳转DetailView时TextField输入崩溃问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI TabView内NavigationLink跳转DetailView时TextField输入崩溃问题咨询

嵌套视图层级下TextField输入触发崩溃问题(iOS 14.4)

崩溃现象

当在嵌套于 List、Detail View 两层结构内的 TextField 中输入内容时,应用会直接崩溃,抛出错误 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 {
    // 省略内部text状态定义
    var body: some View {
        TextField("Keyboard appears and the app crashes.", text: $text)
    }
}

核心诉求

  • 寻找该崩溃的可落地规避方案
  • 测试验证发现:如果移除外层 TabView,整套页面流程可以正常运行,但业务要求必须保留 TabView 能力,需要找到方案实现让 Detail View 跳出 TabView 的视图层级,在其外部完成渲染

已验证的有效解决路径

通过使用 UITabViewController 结合 UIViewControllerRepresentable 桥接替换原生SwiftUI TabView 的方式,该崩溃问题已被完全解决,结合测试结果推测,故障根源为SwiftUI原生 TabView 在iOS 14.4系统的特定层级组合下存在渲染逻辑缺陷。


内容的提问来源于stack exchange,提问作者nonamorando

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.06 06:06:03