动态设置 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"){}
}
})
}
}
}
如何动态更改 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"){}
}
})
}
}
}