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

WatchOS 8.1下SwiftUI TabView内嵌List、ForEach时NavigationView跳转异常bug

WatchOS 8.1 TabView嵌套NavigationLink跳转异常问题说明

问题表现

相同代码在WatchOS 7、8.0版本运行无异常,升级到WatchOS 8.1后,点击列表中NavigationLink跳转到目标页面时会立即自动返回根视图。该问题已提交苹果官方反馈,反馈编号为FB9727188。

问题复现代码

struct ContentView: View {
    @State var tabIndex:Int = 0
    var body: some View {
        TabView(selection: $tabIndex) {
            ListView()
                .tabItem {
                    Group {
                        Text("List")
                    }
                }
                .tag(0)
                .padding(.bottom, 1.0)
            Text("Second View")
                .tabItem {
                    Group {
                        Text("Second")
                    }
                }
                .tag(1)
                .padding(.bottom, 1.0)
            Text("Third View")
                .tabItem {
                    Group {
                        Text("ThirdView")
                    }
                }
                .tag(2)
        }
    }
}

struct ListView: View {
    var body: some View {
        List {
            ForEach((1...10).reversed(), id: \.self) {_ in
                NavigationLink(destination: Text("test")) {
                    Text("Tap Me but we'll just be back here")
                }
            }
        }
    }
}

根因说明

该问题为WatchOS 8.1的系统原生bug,TabView的选中状态切换逻辑异常导致页面状态意外刷新,NavigationLink的跳转栈被强制重置。

临时规避方案

  • 方案1:在整体TabView的外层包裹NavigationView,并指定.navigationViewStyle(.stack)适配WatchOS布局
  • 方案2:给每个Tab对应的子页面单独包裹一层NavigationView,仅在需要导航跳转的页面配置导航栈
  • 方案3:若不需要多Tab切换逻辑,可临时移除TabView使用单一导航栈布局,待系统版本修复后再恢复原逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:27:00