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

SwiftUI的Programmatic NavigationLink push入栈无默认动画如何解决

SwiftUI 编程式NavigationLink跳转无默认转场动画解决方案

问题描述

使用SwiftUI的Programmatic NavigationLink实现push入栈跳转时,未触发系统默认的转场动画,需要恢复默认动画效果,参考实现代码如下:

struct ContentView: View {
    @State private var isShowingDetailView = false

    var body: some View {
        NavigationView {
            VStack {
                NavigationLink(destination: Text("Second View"), isActive: $isShowingDetailView) { EmptyView() }

                Button("Tap to show detail") {
                    isShowingDetailView = true
                }
            }
            .navigationTitle("Navigation")
        }
    }
}

问题原因

动画失效是因为业务代码中将NavigationLink放在了isShowingDetailView的条件判断分支中,导致视图渲染逻辑不符合系统转场动画的触发要求。
错误写法参考:

if isShowingDetailView { //remove if else
  NavigationLink(destination: Text("Second View"), isActive: $isShowingDetailView) { EmptyView() }
}

解决方案

将NavigationLink从isShowingDetailView的条件判断中移除,保证NavigationLink在视图层级中始终存在,即可恢复系统默认的push转场动画。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:15:05