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