首页 > 解决方案 > 如何获取在 TabView 中选择了哪个视图的值?

问题描述

我目前正在使用 SwiftUI 开发应用程序。

这个应用程序有 2 个视图控制一个选项卡视图。

我想获得一个关于在 TabView 中选择了哪个视图的值。

有没有办法做到这一点?


内容视图.swift

import SwiftUI

struct ContentView: View {
    
   var body: some View {
        TabView {
           FirstView()
                .tabItem {
                        Text("First")
            }.tag(1)
           SecondView()
                .tabItem {
                        Text("Second")
            }.tag(2)
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

FirstView.swift

import SwiftUI

struct FirstView: View {
    var body: some View {
        Text("FirstView")
    }
}

struct FirstView_Previews: PreviewProvider {
    static var previews: some View {
        FirstView()
    }
}

SecondView.swift

import SwiftUI

struct SecondView: View {
    var body: some View {
        Text("SecondView")
    }
}

struct SecondView_Previews: PreviewProvider {
    static var previews: some View {
        SecondView()
    }
}

Xcode:版本 11.7

斯威夫特:斯威夫特 5

标签: swiftuiswift5

解决方案


您需要使用选择,如下所示

注意:选择应该与用于标签的类型相同(并使用标签中的相应值以编程方式选择特定选项卡)

struct ContentView: View {
   @State private var selectedTab = 1  // default selection

   var body: some View {
        TabView(selection: $selectedTab) {     // << here !!
           FirstView()
                .tabItem {
                        Text("First")
            }.tag(1)
           SecondView()
                .tabItem {
                        Text("Second")
            }.tag(2)
        }
    }
}

推荐阅读