TabView(SwiftUI):在已激活的tabItem上响应onTab

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

View1中有一个NavigationView以及一些childViews。View2只是一个View。

当第一个tabItem被按下时,我想执行一些操作(即使返回到View1的childView中,也总是返回到View1)。

我尝试了如下所示的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)

}

}

}

以上是 TabView(SwiftUI):在已激活的tabItem上响应onTab 的全部内容, 来源链接: utcz.com/qa/411465.html

回到顶部