SwiftuiTabBar:点击当前选定Tab的TabItem以重置视图的操作

我正在开发的应用程序基于 TabBar,当我在选项卡上时,我希望能够再次单击 tabItem 以重置视图,类似于 twitter 在他们的 tabBar 中执行此操作的方式。

我不知道如何识别那个动作。向 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选择状态周围注入代理绑定并处理在绑定值设置之前点击的重复选项卡,如下所示。

使用 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)
        }
    }
}


以上是SwiftuiTabBar:点击当前选定Tab的TabItem以重置视图的操作的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>