我有一个包含TabView的ContentView.swift。
View1中有一个NavigationView以及一些childViews。View2只是一个View。
当第一个tabItem被按下时,我想执行一些操作(即使返回到View1的childView中,也总是返回到View1)。 即使它已经是活动的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) } } }