动态设置 SwiftUI NavigationBarItems?

Dynamically set SwiftUI NavigationBarItems?

如何动态更改 SwiftUI 导航栏项目?

我在 NavigationView 中有一个 TabView,我希望导航栏项目根据所选的选项卡进行更改。但是,我很难确定如何使用 .onAppear() 更改此设置,假设这甚至是您应该做的。

我的代码目前布局如下:

var body: some View {
        NavigationView {
            TabView {
                contentWithNavigationButtons()
                    .tabItem {
                        Image(systemName: "house")
                        Text("Buttons")
                    }
                
                contentWithoutNavigationButtons()
                    .tabItem {
                        Image(systemName: "person")
                        Text("No Buttons")
                    }
                    .onAppear {
                        //Navigation Bar Items should be removed
                    }
                
            }
            .navigationBarItems(trailing: someButton)
        }

这是一个可能的解决方案演示 - 为选项卡添加跟踪选择并根据选项卡选择制作按钮。测试 Xcode 12 / iOS 14

struct DemoView: View {
    @State private var selection = 0    // << here !!
    var body: some View {
        NavigationView {
            TabView(selection: $selection) {
                contentWithNavigationButtons()
                    .tabItem {
                        Image(systemName: "house")
                        Text("Buttons")
                    }.tag(0)                // << here !!
                
                contentWithoutNavigationButtons()
                    .tabItem {
                        Image(systemName: "person")
                        Text("No Buttons")
                    }.tag(1)
                
            }
            .navigationBarItems(trailing: Group {
                if selection == 0 {     // << here !!
                    Button("Some"){}
                }
            })
        }
    }
}