我正在尝试在SwiftUI中实现,在其中您可以在一个选项卡上的 View 中按一个按钮,然后将其更改为另一个选项卡。我会使用UIKit:

if [condition...button pressed] {
    self.tabBarController!.selectedIndex = 2
}
但是在SwiftUI中是否有实现此目的的等效方法?

最佳答案

您只需要更新负责选择的@State变量即可。但是,如果要从 subview 执行此操作,可以将其作为@Binding变量传递:

struct ContentView: View {
    @State private var tabSelection = 1

    var body: some View {
        TabView(selection: $tabSelection) {
            FirstView(tabSelection: $tabSelection)
                .tabItem {
                    Text("Tab 1")
                }
                .tag(1)
            Text("tab 2")
                .tabItem {
                    Text("Tab 2")
                }
                .tag(2)
        }
    }
}
struct FirstView: View {
    @Binding var tabSelection: Int
    var body: some View {
        Button(action: {
            self.tabSelection = 2
        }) {
            Text("Change to tab 2")
        }
    }
}

08-16 05:36