Ios 从SwiftUI中的TabView获取所选选项卡索引的方法

Ios 从SwiftUI中的TabView获取所选选项卡索引的方法,ios,swift,swiftui,Ios,Swift,Swiftui,我刚刚添加了TabView,它工作正常,但如果没有,我无法提取所选的选项卡索引。 我想我的代码保存得很好,不知道出了什么问题 struct DefaultTabbar: View { @State private var selectedItem = 1 // @State private var homeTabIcon = "tab_home" var body: some View { TabView(selection: $selectedIte

我刚刚添加了TabView,它工作正常,但如果没有,我无法提取所选的选项卡索引。
我想我的代码保存得很好,不知道出了什么问题

struct DefaultTabbar: View {

    @State private var selectedItem = 1
    // @State private var homeTabIcon = "tab_home"

    var body: some View {
        TabView(selection: $selectedItem) {
            FirstView()
                .tabItem{
                    Image(systemName: "house")
                    Text("First Tab")
            }
            .tag(1)

            SecondView()
                .tabItem{
                    Image(systemName: "photo")
                    Text("Second Tab")
            }
            .tag(2)
        }
        .accentColor(.orange)
        .onTapGesture {
            print("selected tab: \(self.selectedItem)")
        }
    }
}
切换选项卡时,我只收到0。
所选选项卡:0。

所选选项卡:0

尝试不使用OnTap手势->它会停止正常的选项卡行为


或者您需要所选的索引吗?

您可以对每个选项卡使用onAppear方法。它看起来很难看,但很管用

struct DefaultTabbar: View {

    var lastSelectedTab = 0 {
        didSet {
            
        }
    }
    @State private var selectedItem = 1

    var body: some View {
        TabView(selection: $selectedItem) {
            FirstView()
                .onAppear(perform: {
                    lastSelectedTab = 0
                })
                .tabItem{
                    Image(systemName: "house")
                    Text("First Tab")
            }
            .tag(1)

            SecondView()
                .onAppear(perform: {
                    lastSelectedTab = 1
                })
                .tabItem{
                    Image(systemName: "photo")
                    Text("Second Tab")
            }
            .tag(2)
        }
        .accentColor(.orange)
    }
}

它被改变了,只需要在需要的地方使用它。但您不能在
选项卡视图
上使用
.ontap手势