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

标签 ios swift swiftui

我刚刚添加了 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。

最佳答案

您可以对每个选项卡使用 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)
    }
}

关于ios - 在 SwiftUI 中从 TabView 获取所选标签索引的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60302920/

相关文章:

swift - Firebase 值未在标签上更新

swift - 如何使用 OnTapGesture 事件播放我的乐透动画?

ios - 剪裁时使 SwiftUI 点击不会超出边界

ios - 将 Xamarin.Forms 应用部署到 iOS : MT1006 EOF Error (error: 0xe800000e)

ios - 为 OpenGL ES 2 处理 PVR 纹理(不过,真正的问题是关于 Objective-C ARC 和类方法)

iphone - iOS 6 - YouTube 应用

ios - 身份检查器中的模块字段用于什么?

swift - UIAlertAction 可以触发函数吗?

ios - 我一整天都在尝试计算用户字符并将它们打印到屏幕上

ios - 添加 viewDidLoad 时 IBAction 不会触发