【问题标题】:Programmatically change to another tab in SwiftUI以编程方式更改为 SwiftUI 中的另一个选项卡
【发布时间】:2020-06-21 21:04:07
【问题描述】:

我正在尝试在 SwiftUI 中实现,您在一个选项卡上的视图中按下一个按钮,它会更改为另一个选项卡。我会使用 UIKit:

if [condition...button pressed] {
    self.tabBarController!.selectedIndex = 2
}

但是在 SwiftUI 中是否有等效的方法来实现这一点?

【问题讨论】:

    标签: ios swift swiftui


    【解决方案1】:

    您只需要更新一个负责选择的@State 变量。但是,如果您想从子视图中执行此操作,您可以将其作为 @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")
            }
        }
    }
    

    【讨论】:

    • 如果我们使用 viewModel?
    • 如果你想从一个非常深的视图切换标签怎么办?非常简单的例子。
    • @JavierCalatravaLlavería 这个解决方案可以指导你:stackoverflow.com/a/65801058/8697793
    • @ErkamKUCET 做同样的事情,但在你的视图模型中创建一个Published 变量
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多