我正在开发的应用程序基于 TabBar,当我在选项卡上时,我希望能够再次单击 tabItem 来重置视图,类似于 Twitter 在其 tabBar 中的做法。
但我不知道如何识别该操作。向 TabItem 添加按钮不起作用,添加 ontapGesture 修饰符也不起作用,而且我想不出还有什么可以尝试的。
struct ContentView: View {
var body: some View {
TabView() {
Text("Tab 1")
.tabItem {
Image(systemName: "star")
.onTapGesture {
print("Hello!")
}
Text("One")
}
.tag(0)
Text("Tab 2")
.tabItem {
Button(action: {
print("Hello!")
}, label: {
Image(systemName: "star.fill")
})
}
.tag(1)
}
}
}
再次打开选项卡时,它不应该自动重置,我已经在其他地方看到过这一点,但是当再次点击 tabItem 时。
我在这里可能还缺少什么其他东西?
这是可能的解决方案 - 注入代理绑定TabView
选择状态和句柄在设置绑定值之前重复点击选项卡,如下所示。
使用 Xcode 12.1 / iOS 14.1 进行测试
struct ContentView: View {
@State private var selection = 0
var handler: Binding<Int> { Binding(
get: { self.selection },
set: {
if $0 == self.selection {
print("Reset here!!")
}
self.selection = $0
}
)}
var body: some View {
TabView(selection: handler) {
Text("Tab 1")
.tabItem {
Image(systemName: "star")
Text("One")
}
.tag(0)
Text("Tab 2")
.tabItem {
Image(systemName: "star.fill")
}
.tag(1)
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)