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

如何在SwiftUI中自定义NavigationStack的导航标题样式

SwiftUI NavigationStack 自定义导航标题解决方案

要同时实现自定义导航标题样式、添加右侧+按钮,且保证子视图返回按钮显示父视图名称,可以通过Toolbar组件替代直接使用.navigationTitle的方式来实现:

完整实现代码

struct ParentView: View {
    var body: some View {
        NavigationStack {
            List(1...10, id: \.self) { item in
                NavigationLink("Item \(item)", destination: ChildView())
            }
            .toolbar {
                // 自定义导航标题,完全控制字体、颜色等样式
                ToolbarItem(placement: .principal) {
                    Text("Parent View")
                        .font(.title.bold())
                        .foregroundColor(.blue)
                }
                // 右侧添加+操作按钮
                ToolbarItem(placement: .navigationBarTrailing) {
                    Button(action: {
                        // 在这里编写按钮点击后的逻辑
                    }) {
                        Image(systemName: "plus")
                    }
                }
            }
            // 设置标题显示模式,可选inline(行内)或large(大标题)
            .navigationBarTitleDisplayMode(.inline)
        }
    }
}

struct ChildView: View {
    var body: some View {
        Text("Child View")
    }
}

方案说明

  • 用ToolbarItem(placement: .principal)自定义标题,不会像直接给.navigationTitle加修饰符那样影响列表项样式,能完全控制字体、颜色等细节
  • 父视图仍处于NavigationStack层级中,子视图的返回按钮会自动显示自定义的父视图标题("Parent View"),而非默认的"Back"
  • 若需要大标题模式,只需将.navigationBarTitleDisplayMode改为.large,并调整自定义标题的字体大小即可适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:57:23