SwiftUI TabBar:点击当前选定选项卡的 TabItem 来重置视图的操作

2024-01-05

我正在开发的应用程序基于 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(使用前将#替换为@)

SwiftUI TabBar:点击当前选定选项卡的 TabItem 来重置视图的操作 的相关文章

随机推荐

  • 如何在角度中使用 useFactory 根据某些条件延迟加载模块?

    我有一个包含大量模块和组件的角度项目 其中我想根据某些业务逻辑显示模块的组件 我想使用 Angular 的强大功能 即延迟加载 这将使我的应用程序变得精简 我想做的事 假设我有一个书店网站 很多读者都花时间阅读在线文章 我想根据以下内容显示
  • 如何使用 xib 文件为自定义 UIView 类编写 init 方法

    我使用界面生成器创建了简单的视图 该视图有一个标签 你知道如何为这个类创建 init 方法吗 我写了自己的版本 但我不确定它是否正确 interface AHeaderView property nonatomic weak IBOutle
  • 如何更改分片键

    我知道不可能更改片键 但是 当我设置了不正确的分片键时 如何更改它 转储您分片的集合 再次导入它 设置新的分片键
  • 使用实体框架添加和更新实体

    在我的上一个项目中 我使用了 Entity Framework 5 Code First 我完成了我的项目 但在开发过程中遇到了很多痛苦 我试图在下面解释我的痛苦 我的数据访问逻辑层中有几个数据类 例如 Product ProductCat
  • 执行内存中的exe

    我正在尝试这段代码 从内存中执行EXE http www coderprofile com networks source codes 138 execute resource directly in memory 我遇到错误 实际和形式
  • WPF-将列表绑定到列表视图

    我正在创建一个 wpf 应用程序并从我的 USB 网络摄像头捕获图像 我尝试过的是将所有捕获的图像存储在List并在一个Listview public List
  • 为什么我不能将函数调用(而不是函数引用或匿名函数)传递给 setTimeout()?

    请忽略这个代码没有实现任何目标的事实 并对可能是一个愚蠢的问题表示歉意 我知道我无法将函数调用传递给setTimeout 作为第一个参数 但是why我可以不这样做吗 let names Andy Ross David function pr
  • 为什么 std::cin 不能隐式转换为 bool?

    In C 入门第五版 第 14 章讨论转换运算符 在该标准的早期版本中 想要定义到 bool 的转换的类面临一个问题 因为 bool 是算术类型 所以转换为 bool 的类类型对象可以在任何需要算术类型的上下文中使用 这种转变可能会以令人惊
  • popen() 替代方案

    我的问题是这个问题的延伸 popen 创建一个额外的 sh 进程 https stackoverflow com questions 6742635 popen creates an extra sh process Motives 1 我
  • 如何在 C# 中打开程序集绑定日志记录?

    我遇到了这个错误 无法弄清楚缺少什么 Could not load file or assembly xxxxx Version 1 0 0 42 Culture neutral PublicKeyToken c5067b3d1110b13
  • 设置 ComboBox 所选项目突出显示颜色

    我需要更改弹出列表中组合框所选项目的突出显示颜色 我找到了几个解释如何执行此操作的教程 但它们都使用 Blend 我没有也无法获取 或者涉及更改系统默认颜色 这对我来说似乎是一种黑客行为 有人可以指出我需要覆盖的模板 或者告诉我需要设置的属
  • 如何在 Makefile 中获取脚本源?

    有没有更好的方法从 makefile 中获取设置环境变量的脚本 FLAG 0 ifeq FLAG 0 export FLAG 1 bin myshell c
  • 递归取消引用指针

    当我试图在这里回答一个问题时 我发现了这个问题 如何递归取消引用指针 C 03 https stackoverflow com questions 8022821 how to recursively dereference pointer
  • 跨两个表的 SQL SELECT

    我对如何处理这个 SQL 查询有点困惑 我有两个表 记录数相同 我想返回一个列 该列是两者之间的除法 换句话说 这是我的无法正常工作 query SELECT SELECT v FROM Table1 SELECT DotProduct F
  • 升级到 NDK 14 后无法在 C++ 代码中找到声明

    我更新了 Android Studio 2 3 以使用 NDK 14 当您使用代码时 一切都按预期工作 代码编译并且应用程序按预期运行 然而 由于某种原因 当您尝试跳转到任何 C 对象 函数 变量的减速时 您会收到一条消息 工作室 无论代码
  • 如何在服务器发布操作结果后打开新选项卡

    情况是这样的 我有一个保存和一个打印按钮
  • 在php中将数字转换为字符串

    在下面我尝试过 code string code 没有成功 如何在 PHP 中将数字转换为字符串 code 087326487326 strlen strlen code print strlen br for i strlen i gt
  • python列表循环技术语法[重复]

    这个问题在这里已经有答案了 我正在读一本article http www peterbe com plog uniqifiers benchmark关于 python 删除列表中的重复元素 有一个函数定义为 def f8 seq Dave
  • 将 unique_ptr 与成员函数指针一起使用时出错

    我有一堂课如下 class A public A int key m key key int Key const return m key private int m key 我测试使用 unique ptr 和成员函数指针 int A M
  • SwiftUI TabBar:点击当前选定选项卡的 TabItem 来重置视图的操作

    我正在开发的应用程序基于 TabBar 当我在选项卡上时 我希望能够再次单击 tabItem 来重置视图 类似于 Twitter 在其 tabBar 中的做法 但我不知道如何识别该操作 向 TabItem 添加按钮不起作用 添加 ontap