简体   繁体   English

从 SwiftUI 中的 TabView 获取所选标签索引的方法

[英]Way to get selected tab index from TabView in SwiftUI

I've just added TabView, which is working fine, but I unable to fetch the selected tab index out if it.我刚刚添加了 TabView,它工作正常,但如果它我无法获取选定的选项卡索引。
I think I've kept my code perfectly fine, not sure what's wrong.我想我的代码保持得很好,不知道出了什么问题。

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)")
        }
    }
}

I'm receiving only 0 while switching tabs.我在切换标签时只收到 0。
selected tab: 0.所选标签:0。
selected tab: 0.所选标签:0。

You can use onAppear method for each tab.您可以对每个选项卡使用 onAppear 方法。 It's looks ugly but it's works.它看起来很丑,但它有效。

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)
    }
}

try without onTapGesture -> it stops the normal tab behaviour尝试不使用 onTapGesture -> 它会停止正常的选项卡行为

or do you need the selectedindex?或者你需要selectedindex?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM