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

SwiftUI中TabView内NavigationLink返回主界面后异常问题咨询

SwiftUI TabView内NavigationLink返回后主视图不保留:Bug还是特性?

问题说明

在iOS 16.1系统的iPhone 14 Pro模拟器、Xcode 14.1环境下,存在如下异常:TabView内部的NavigationLink在从跳转页面返回主界面时,无法保留原视图状态,但TabView外的普通NavigationLink则能正常保留状态。(截图表现为:点击TabView外的链接跳转返回后,主界面元素状态正常;点击TabView内的链接跳转返回后,TabView内的视图被重置,无法维持跳转前的状态)

复现代码

import SwiftUI

@main
struct ExempleApp: App {
    var body: some Scene {
        WindowGroup {
            NavigationView {
                ContentView()
            }
        }
    }
}

struct ContentView: View {
    var body: some View {
        VStack {
            NavigationLink() {
                Text("The page is retained after returning from the main screen.")
            } label: {
                Text("This works")
            }
            
            TabView() {
                VStack {
                    NavigationLink() {
                        Text("The page doesn't stay after returning from the main screen.")
                    } label: {
                        Text("This doesn't work")
                    }
                }
                .tabItem {
                    Image(systemName: "bookmark")
                }
                .tag(0)
            }
        }
    }
}

结论:这是SwiftUI的版本Bug

这种行为不符合开发者预期——TabView内的NavigationLink理应和外部的NavigationLink遵循一致的状态保留逻辑。该问题是iOS 16.1版本中SwiftUI对TabView视图生命周期管理的异常导致:当NavigationLink跳转返回时,TabView内的子视图被意外重建,进而丢失状态。后续iOS 16.2及以上版本已修复此问题,建议升级系统或Xcode版本验证。

临时规避方案

若需在iOS 16.1环境下解决此问题,可调整视图层级,将TabView作为NavigationView的直接子视图:

struct ContentView: View {
    var body: some View {
        TabView() {
            NavigationView {
                VStack {
                    NavigationLink() {
                        Text("Now this works after returning!")
                    } label: {
                        Text("Fixed version")
                    }
                }
            }
            .tabItem {
                Image(systemName: "bookmark")
            }
            .tag(0)
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:05:23