如何解决如何以编程方式在单击按钮时切换选项卡?在swiftui
我已经在代码中实现了标签栏。我在第一个选项卡中看到了所有按钮,并且希望从该按钮以编程方式切换到第二个选项卡。当我使用navigationView时,它将创建另一个标签栏并移至该屏幕,这将更改swiftui中的导航索引。
struct AppTabNavigation: View {
@State var selection: Tab = .dashboard
var body: some View {
TabView(selection: $selection) {
NavigationView {
FirstTabView()
}.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
.navigationViewStyle(StackNavigationViewStyle())
.tabItem {
Label("Home",systemImage: "house.fill")
.accessibility(label: Text("Home"))
}
.tag(Tab.home)
NavigationView {
SecondView()
}.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
.navigationViewStyle(StackNavigationViewStyle())
.tabItem {
Label("Home",systemImage: "house.fill")
.accessibility(label: Text("Home"))
}
.tag(second)
}
}
}
导航代码:
NavigationLink(destination: AppTabNavigation(selection: Tab.home),isActive: self.$isActiveTabbar){
Text("")
} .isDetailLink(false)
解决方法
这里是一种可能方法的演示-想法是将带有选项卡选择的绑定移动到带有按钮的视图中,以便按钮动作可以更改它。
通过Xcode 12 / iOS 14测试
enum Tab {
case dashboard
case home
case second
}
struct AppTabNavigation: View {
@State var selection: Tab = .home
var body: some View {
TabView(selection: $selection) {
NavigationView {
FirstTabView(tab: $selection)
}.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
.navigationViewStyle(StackNavigationViewStyle())
.tabItem {
Label("Home",systemImage: "house.fill")
.accessibility(label: Text("Home"))
}
.tag(Tab.home)
NavigationView {
Text("SecondView")
}.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
.navigationViewStyle(StackNavigationViewStyle())
.tabItem {
Label("Home",systemImage: "house.fill")
.accessibility(label: Text("Home"))
}
.tag(Tab.second)
}
}
}
struct FirstTabView: View {
@Binding var tab: Tab
var body: some View {
Button("Go Second") { self.tab = .second }
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。