2

如何动态更改 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)
        }
4

1 回答 1

2

这是一个可能的解决方案的演示 - 为选项卡添加跟踪选择并根据选项卡选择制作按钮。使用 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"){}
                }
            })
        }
    }
}
于 2020-10-10T05:27:00.127 回答