列表中的第一项始终被选中

2024-01-21

我有一个项目列表,我希望能够导航到详细信息视图。但是,列表中的第一个元素始终传递给此视图,这可能是什么问题?

struct ContentView: View {
    var array: [Object] = [Object(id: .init(),property: 1),Object(id: .init(),property: 2),Object(id: .init(),property: 3)]
    
    @State var showAlert = false
    @State var showDetailsView = false
    
    
    var body: some View {
        NavigationView{
            List{
                ForEach(array){ item in
                    VStack{
                        Text(String(item.property))
                    }.onTapGesture(){ self.showAlert.toggle()}
                    .alert(isPresented: $showAlert){
                        Alert(title: Text("show details view?"), message: Text(""),
                              primaryButton: .default (Text("Show")) {
                                showDetailsView.toggle()
                              },
                              secondaryButton: .cancel()
                        )
                    }
                    .fullScreenCover(isPresented: $showDetailsView){ DetailsView(property: item.property) }
                }
            }
        }
    }
}

struct Object: Identifiable {
    let id: UUID
    var property: Int
}

struct DetailsView: View {
    var property: Int?
    
    var body: some View {
        Text(String(property!))
    }
}

无论我选择列表中的哪一项,我都会得到这个结果:


在这种情况下,我们可以传递点击的项目,例如接力棒ForEach to Alert to FullScreen to Details。当然,我们应该将相应的修饰符移出循环,它们不需要应用于每一行。

这是修改后的代码。使用 Xcode 12.1 / iOS 14.1 进行测试。

struct ContentView: View {
    var array: [Object] = [Object(id: .init(),property: 1),Object(id: .init(),property: 2),Object(id: .init(),property: 3)]
    
    @State var alertItem: Object?
    @State var selectedItem: Object?
    
    
    var body: some View {
        NavigationView{
            List{
                ForEach(array){ item in
                    VStack{
                        Text(String(item.property))
                    }.onTapGesture(){ self.alertItem = item}
                }
            }
              .alert(item: $alertItem) { item in
                    Alert(title: Text("show details view?"), message: Text(""),
                            primaryButton: .default (Text("Show")) {
                              selectedItem = item
                            },
                            secondaryButton: .cancel()
                    )
              }
              .fullScreenCover(item: $selectedItem){ DetailsView(property: $0.property) }
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

列表中的第一项始终被选中 的相关文章

随机推荐

  • httpError:Http 传输返回 0 状态代码

    我有一个登录页面
  • OS X Python:我可以为扩展显式设置 MACOSX_DEPLOYMENT_TARGET 吗?

    我用python org http python org在最新版本的 OS X 即 10 11 El Capitan 下构建 Python 框架 我需要构建一些依赖于最新版本的编译器的扩展 例如 C 11 功能 然而 python org
  • MySQL:如何通过 GROUP BY 字段来检索 ORDER BY 另一个字段的行?

    假设以下数据 Data id date name grade 1 2010 12 03 Mike 12 2 2010 12 04 Jenny 12 3 2010 12 04 Ronald 15 4 2010 12 03 Yeni 11 我想
  • 枚举值初始化的行为

    首先 我想说 根据 cppreference com 对枚举进行值初始化有些不可能 根据http en cppreference com w cpp language value initialization http en cpprefe
  • iPhone 应用程序中的 Google 地图街景

    我们可以在 MKMapKit 中使用街景吗 它与 iPhone 谷歌地图应用程序一起使用 如果现在我们可以集成到我们的应用程序中吗 我已经成功地使用 javascript Google Maps API 来实现这一点 iPhone 4 上的
  • 使用 Python 监控 Java 应用程序 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 I m a python程序员 并且想要监控 Java 应用程序 通过与JMX 我一直在网上搜索 但没
  • 为 iOS 编译 Qt(UIKit lighthouse)

    我一直在尝试为 iOS 编译 Qt 但我遇到了一些其他人似乎没有遇到的疯狂问题 至少根据我过去一天读到的内容 我按照这篇文章中的说明进行操作 文章网址 http labs qt nokia com 2011 08 09 update on
  • 在集合视图中删除整行后,装饰视图不会被删除

    我已经添加了装饰视图UICollectionView通过子类UICollectionViewFlowLayout Im placing decoration view under each row in collection view It
  • XGBoost 和稀疏矩阵

    我正在尝试使用 xgboost 来运行 using python 分类问题 其中我的数据位于numpy 矩阵 X 行 观察值 列 特征 和 a 中的标签numpy 数组 y 因为我的数据很稀疏 所以我想让它使用 X 的稀疏版本运行 但似乎在
  • Liferay:从 init() 获取 PortletID 和 companyID

    也许通过 init PortletConfig 中的 PortletConfig 问题是使用 PortletConfigImpl portletConfig getPortletId 不再允许 因为在 package properties
  • CSS - 如何使内部包裹有浮动的 DIV 大小仅与容纳浮动所需的大小相同?

    我有几个花车和它们周围的 DIV 该 DIV 位于另一个 DIV 内 并且应该在其中水平居中 问题是内部 DIV 不是固定宽度的 也不可能是固定宽度的 这是代码 div outer text align center div inner d
  • Jquery - 将条目添加到右键单击上下文菜单

    你可以禁用菜单 document bind contextmenu function e return false 你可以显示一个div document bind contextmenu function e menu css top e
  • .NET 生产调试

    我的 Windows 应用程序已经投入生产一段时间了 并将其设置为在抛出异常时向我们发送错误报告 其中大多数都具有相当的描述性 可以帮助我快速找到问题 我使用 MS 应用程序异常块 在某些情况下 我收到的报告是我无法重现的问题 并且似乎只发
  • 如何在各个数据点之间添加线条?

    我正在尝试在 Highcharts 中制作一个散点图 该图仅将两个单独的点相互连接 但不连接到任何其他点 显示数据点随时间的变化 Here http jsfiddle net 2MdEN 我说明我的问题 我希望点之间有一条线 20 20 a
  • 从 Android 应用程序启动 Google 地图和导航器

    我有一个 Android 应用程序 它允许用户打开谷歌地图或导航器来显示某个地址 此功能过去是有效的 但现在我收到以下错误并且应用程序崩溃 错误 AndroidRuntime 2165 android content ActivityNot
  • Windows 桌面上的 cygwin ssh 快捷方式

    我有多个需要远程访问的服务器 与 Putty 相比 我更喜欢 Cygwin 这样做 无论如何 打开我很酷的 Mintty 窗口然后输入以下命令的过程花费了太长时间 PS 我正在对这些服务器使用 密钥 身份验证 首先 我从 Windows 桌
  • 从 apache cxf REST 响应中删除空值字段

    我在用着apache cxf 2 7 11 jackson codehaus 1 9 13 spring 3 5在我的 REST 服务 Web 容器中 我想知道删除的最佳方法是什么null来自 REST 响应的值字段 例如 我的回应现在是这
  • 如何在 Dockerfile 中设置镜像名称?

    您可以在构建自定义图像时设置图像名称 如下所示 docker build t dude man v2 Will be named dude man v2 有没有办法在 Dockerfile 中定义镜像的名称 这样我就不必在docker bu
  • 子串算法

    有人可以向我解释如何迭代解决子串问题吗 The problem given two strings S S1S2S3 Sn and T T1T2T3 Tm with m is less than or equal to n determin
  • 列表中的第一项始终被选中

    我有一个项目列表 我希望能够导航到详细信息视图 但是 列表中的第一个元素始终传递给此视图 这可能是什么问题 struct ContentView View var array Object Object id init property 1