You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TabView中NavigationLink返回触发tvOS应用崩溃如何解决

问题原因

tvOS 15 中 NavigationView 的默认行为与 iOS 不同,默认导航样式不采用栈式管理,按下遥控器菜单键时系统无法识别导航层级的 pop 需求,会直接触发应用退出逻辑,同时抛出你看到的 BSActionErrorDomain 错误。

解决方案

方案1:添加导航样式修饰符(适配tvOS 15+,改动最小)

给所有 NavigationView 显式添加 .navigationViewStyle(.stack) 修饰符,指定导航栈管理逻辑,和iOS默认行为对齐即可:

struct ContentView: View {  
    var body: some View {
        TabView {
            NavigationView {
                NavigationLink(destination: Text("Subview")) {
                    Text("Subview")
                }
            }
            .navigationViewStyle(.stack)
            .tabItem {
                Text("Main")
            }

            NavigationView {
                Text("Settings")
            }
            .navigationViewStyle(.stack)
            .tabItem {
                Text("Settings")
            }
        }
    }
}

修改后进入子页面按菜单键会优先返回上一级,导航栈回到根页面后按菜单键才会退出应用。

方案2:使用NavigationStack(适配tvOS 16+,长期推荐)

如果你的应用最低支持版本可升级到tvOS 16,直接替换已废弃的NavigationView为NavigationStack,原生适配tvOS导航逻辑,无需额外添加修饰符:

struct ContentView: View {  
    var body: some View {
        TabView {
            NavigationStack {
                NavigationLink(destination: Text("Subview")) {
                    Text("Subview")
                }
            }
            .tabItem {
                Text("Main")
            }

            NavigationStack {
                Text("Settings")
            }
            .tabItem {
                Text("Settings")
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:24:00