簡體   English   中英

TabView (SwiftUI):在已經激活的 tabItem 上響應 onTab

[英]TabView (SwiftUI): Respond onTab on an already active tabItem

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

View1 中有一個帶有一些子視圖的 NavigationView。 View2 只是一個視圖。

當按下第一個 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)
        }
    }
}

備份

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM