gpt4 book ai didi

Swiftui TabBar : Action for tapping TabItem of currently selected Tab to reset view

转载 作者:行者123 更新时间:2023-12-04 12:20:32 28 4
gpt4 key购买 nike

我正在开发的应用程序基于 TabBar,当我在选项卡上时,我希望能够再次单击 tabItem 以重置 View ,类似于 twitter 在他们的 tabBar 中执行此操作的方式。
我不知道如何识别那个 Action 。向 TabItem 添加按钮不起作用,添加 tapGesture 修饰符也不起作用,我想不出还有什么可以尝试的。

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 周围注入(inject)代理绑定(bind)选择状态并处理在设置绑定(bind)值之前点击的重复选项卡,如下所示。
使用 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)
}
}
}

关于Swiftui TabBar : Action for tapping TabItem of currently selected Tab to reset view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65047905/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com