ios - 在根据条件显示的两个视图上使用相同的 `navigationBarTitle` 和 `navigationBarItems`
问题描述
我有一个视图,它显示Text
视图以显示帮助文本,供用户点击加号图标以添加组。添加组后,它会显示List
视图。要显示导航栏,我需要同时调用和navigationBarTitle
查看。下面是我的代码片段。navigationBarItems
Text
List
import SwiftUI
struct Home:View {
@EnvironmentObject var dataStore:DataStore
var body: some View {
NavigationView {
if dataStore.groups.isEmpty {
Text("Tap on + icon to add group.")
.font(.caption)
.multilineTextAlignment(.center)
.padding()
.foregroundColor(.gray)
.navigationBarTitle(Text("My App Name"), displayMode: .automatic)
.navigationBarItems(
trailing:
NavigationLink(
destination:
CreateGroup(),
label: {
Image(systemName: "plus")
.foregroundColor(Color.blue)
})
)
} else {
List(dataStore.groups) { groupElement in
GroupRow(group: groupElement)
}
.navigationBarTitle(Text("My App Name"), displayMode: .automatic)
.navigationBarItems(
trailing:
NavigationLink(
destination:
CreateGroup(),
label: {
Image(systemName: "plus")
.foregroundColor(Color.blue)
})
)
}
}
}
}
有没有办法只调用一次而不是同时调用navigationBarTitle
和视图?navigationBarItems
Text
List
解决方案
有没有办法只调用一次 navigationBarTitle 和 navigationBarItems 而不是同时调用 Text 和 List 视图?
是的,您可以将条件包装到任何容器中,例如 Group 或 xStack:
struct Home:View {
@EnvironmentObject var dataStore:DataStore
var body: some View {
NavigationView {
Group {
if dataStore.groups.isEmpty {
Text("Tap on + icon to add group.")
.font(.caption)
.multilineTextAlignment(.center)
.padding()
.foregroundColor(.gray)
} else {
List(dataStore.groups) { groupElement in
GroupRow(group: groupElement)
}
}
}
.navigationBarTitle(Text("My App Name"), displayMode: .automatic)
.navigationBarItems(
trailing:
NavigationLink(
destination:
CreateGroup(),
label: {
Image(systemName: "plus")
.foregroundColor(Color.blue)
})
)
}
}
}
推荐阅读
- c# - 二维列表的对角线差异
- vue.js - Vue JS - 处理 zip 文件时更新数据值
- r - R使用具有相同名称的列选择的另一个数据框来改变数据框列的选择
- applescript - 如何从我的调用者脚本访问外部 AppleScript 库
- https - 必发 Tcl 登录脚本
- smartsheet-api - Smart Sheet API 2.0 - 访问用户/我时出现错误代码 1004
- sql - SQL Snowflake - 在一张表中比较 2 个日期
- arrays - 在按钮上颤动显示firestore数据数组
- reactjs - 如何等待redux调度调用的完成
- mysql - 在我的数据库中插入双精度似乎忽略了 (M,D) 浮点语法