ios - TabView (SwiftUI) : Respond onTab on an already active tabItem

标签 ios swift swiftui

我有一个包含 TabView 的 ContentView.swift。

View1 中有一个带有一些 subview 的 NavigationView。
View2 只是一个 View 。

当按下第一个 tabItem 时,我想执行一些操作(总是返回到 View1,即使在 View1 的 childView 中)。 即使它已经是事件的 tabItem。

我尝试了如下所示的 onTapGesture,它似乎没有做任何事情。在 ".tag(0)"之前添加它也没有改变任何东西:

                            TabView {
                            View1()
                                .onTapGesture {
                                    print("Test")
                            }
                                .tabItem {
                                    Image(systemName: "doc.plaintext")
                                        .font(.system(size: 25))
                                    Text("View1")
                            }.tag(0)

                            View2()
                                .tabItem {
                                    Image(systemName: "person.crop.circle")
                                        .font(.system(size: 25))
                                    Text("View2")
                            }.tag(1)

最佳答案

这是可能的方法。使用 Xcode 11.4/iOS 13.4 测试

struct TestTabSelectionAction: View {
    @State private var selectedTab = 0

    var body: some View {
        let selection = Binding<Int>(
            get: { self.selectedTab },
            set: { self.selectedTab = $0
                print("Pressed tab: \($0)")
                if $0 == 0 {
                           // <<< your action here !!
                }
        })

        return TabView(selection: selection) {
            View1()
            .tabItem {
                Image(systemName: "doc.plaintext")
                    .font(.system(size: 25))
                Text("View1")
            }.tag(0)

            View2()
                .tabItem {
                    Image(systemName: "person.crop.circle")
                        .font(.system(size: 25))
                    Text("View2")
            }.tag(1)
        }
    }
}

关于ios - TabView (SwiftUI) : Respond onTab on an already active tabItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61041114/

相关文章:

ios - 你如何缩小 iPhone 上的 UIPickerView?

ios - 主线程上的异步任务与同步任务相同吗?

swift - Urban Airship swift

swift - 哪里误用了类型?

ios - SwiftUI:当应用程序在后台时如何添加带有应用程序 Logo 的模糊 View ?

objective-c - iOS - 在没有应用程序更新的情况下更新用户流程

ios - Swift 3.1 弃用了 initialize()。我怎样才能达到同样的目的?

ios - 已解决 - 如何在 SceneKit 中使用 "HEVC with Alpha channel"视频?

swift - Swift 3 是否完全向后兼容以前的操作系统版本

macos - 如何在 MacOS 的 SwiftUI 中向 TextFields 添加建议(参见下面的 gif)?