如何在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
相关产品推荐
相关产品推荐

