Я удалил NavView из MainView и добавил NavViews к подпредставлениям с помощью новой структуры NavigationTab.
struct NavigationTab<Title, Content>: View where Title: StringProtocol, Content: View {
var title: Title
var content: () -> Content
var body: some View {
NavigationView {
content()
.navigationBarTitle(Text(title), displayMode: .inline)
}
}
}
Элементы вкладок теперь выглядят так:
NavigationTab(title: "Dashboard" ) {
DashboardView()
.navigationBarItems(leading: Button(action: {
self.isDrawerOpen.toggle()
}) {
Image(systemName: "sidebar.left")
})
}
.tabItem{
Image(systemName: "chart.pie")
Text("Dashboard")
}.tag(1)
Я решил начальную проблему добавления кнопки в NavView, реплицировав кнопку DrawerOpen на несколько вкладок и назначив одну и ту же переменную isDrawerOpen. .
Но у меня все еще есть вариант использования в процессе, когда мне нужно добавить кнопку в NavView.trailing для отправки. Есть ли способ добавить кнопку в подпредставление (например, DashboardView вызывает другое представление)?