List 内的 NavigationLink 适用于 HStack 而不是每个元素

2023-11-23

我正在努力追随组合复杂的接口SwiftUI 指南,但在让 NavigationLink 在 iOS 13 beta 3 和现在的 beta 4 上正常工作时遇到问题。

如果您只是下载项目文件并尝试运行它,请单击任何 Lake 图像 - 什么都不会发生。但是,如果您单击标题“湖泊”,它将开始一个又一个地打开每个湖泊,这不是任何人都期望的行为。

似乎 NavigationLink 在“复杂”界面中被破坏了。有解决方法吗?

我尝试过降低其复杂性,并删除 List 的 HStack 有助于使 NavigationLinks 正常工作,但随后我无法像示例中那样构建完整的界面。

代码的相关部分:

    var body: some View {
        NavigationView {
            List {
                FeaturedLandmarks(landmarks: featured)
                    .scaledToFill()
                    .frame(height: 200)
                    .clipped()
                    .listRowInsets(EdgeInsets())

                ForEach(categories.keys.sorted(), id: \.self) { key in
                    CategoryRow(categoryName: key, items: self.categories[key]!)
                }
                .listRowInsets(EdgeInsets())

                NavigationLink(destination: LandmarkList()) {
                    Text("See All")
                }
            }
            .navigationBarTitle(Text("Featured"))
            .navigationBarItems(trailing: profileButton)
            .sheet(isPresented: $showingProfile) {
                ProfileHost()
            }
        }
    }


struct CategoryRow: View {
    var categoryName: String
    var items: [Landmark]

    var body: some View {
        VStack(alignment: .leading) {
            Text(self.categoryName)
                .font(.headline)
                .padding(.leading, 15)
                .padding(.top, 5)

            ScrollView(.horizontal, showsIndicators: false) {
                HStack(alignment: .top, spacing: 0) {
                    ForEach(self.items, id: \.name) { landmark in
                        NavigationLink(
                            destination: LandmarkDetail(
                                landmark: landmark
                            )
                        ) {
                            CategoryItem(landmark: landmark)
                        }
                    }
                }
            }
            .frame(height: 185)
        }
    }
}

struct CategoryItem: View {
    var landmark: Landmark
    var body: some View {
        VStack(alignment: .leading) {
            landmark
                .image(forSize: 155)
                .renderingMode(.original)
                .cornerRadius(5)
            Text(landmark.name)
                .foregroundColor(.primary)
                .font(.caption)
        }
        .padding(.leading, 15)
    }
}

看起来有一个错误NavigationLink不直接包含在 a 中的实例List。如果更换最外层List with a ScrollView and a VStack然后是内部NavigationLinks正确工作:

i.e.

 var body: some View {
    NavigationView {
        ScrollView(.vertical, showsIndicators: true) {
            VStack {
                FeaturedLandmarks(landmarks: featured)
                    .scaledToFill()
                    .frame(height: 200)
                    .clipped()
                    .listRowInsets(EdgeInsets())

                ForEach(categories.keys.sorted(), id: \.self) { key in
                    CategoryRow(categoryName: key, items: self.categories[key]!)
                }
                .listRowInsets(EdgeInsets())

                NavigationLink(destination: LandmarkList()) {
                    Text("See All")
                }
            }
        }
        .navigationBarTitle(Text("Featured"))
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

List 内的 NavigationLink 适用于 HStack 而不是每个元素 的相关文章

随机推荐

  • Flutter StreamBuilder 在初始化时调用两次

    StreamBuilder 总是被调用两次吗 一次用于初始数据 然后一次用于输入流 初始化下面的StreamBuilder可以看出build方法被调用了两次 第二次调用比第一次调用晚了 0 4 秒 流 内部版本 1566239814897
  • SASS 连接类名?

    我从中得到了一个 LESS 文件日期选择器插件并想将其转换为 SASS 但在 LESS 中 它连接了一个类名 如下所示 LESS dropdown inline Result dropdown inline 我在 SASS 中尝试了很多东西
  • 图像直方图的高斯混合模型

    我正在尝试根据像素强度值对 2D MR 图像的不同区域进行自动图像分割 第一步是在图像的直方图上实现高斯混合模型 我需要绘制从获得的结果高斯score samples方法到直方图上 我尝试按照答案中的代码进行操作 了解高斯混合模型 Howe
  • 如何将人造丝的 .par_iter() 与泛型向量一起使用?

    这是一个人为的例子 但我相信如果我能让这个工作正常 我可以将其应用到我的具体案例中 extern crate num extern crate rayon use rayon prelude use num Float fn sqrts
  • 如何自定义 ggpairs 中的行 [GGally]

    我有以下情节 使用此代码生成 library GGally data iris ggpairs iris 1 4 lower list continuous smooth params c colour blue diag list con
  • jQuery removeAttr('type') 不起作用

    我的问题很简单 button removeAttr type 在 firebug 上触发错误 type property can t be changed 我有两个问题 如何解决这个问题 是否有包含无法更改的属性列表的参考 Thanks E
  • 如何创建一个数组或字典,其值只能是 String、Int 和 Boolean? [复制]

    这个问题在这里已经有答案了 我有一个要求 我需要创建一个数组 其值只能是 String Int 或 boolean 如果我尝试添加 Double 或任何其他值类型 Swift 编译器应该会抱怨 protocol Elem extension
  • 查找某个点下方的所有窗口

    我想找到桌面上给定点下方的所有顶级窗口 桌面的子窗口 我找不到这方面的 API 我的情况是 我正在屏幕上拖动一个窗口 并希望将其放入另一个 已知 窗口中 我可以测试目标窗口的边界 但这并不能告诉我它是否被另一个 未知 窗口遮挡 使用Wind
  • Spring MVC 中的有序 RequestMapping

    我正在使用带注释的控制器开发 Spring MVC 项目 我感兴趣的一件事是关于顺序 RequestMapping待处理的指令 例如 我想要所有 green basic welcome要映射到GreenController welcome
  • move_uploaded_file 不起作用,没有错误

    我正在运行一个脚本 该脚本移动上传的文件move uploaded file 我已经这样做了数千次 但由于某种原因它不起作用 我已确认以下事项
  • 在 Linux 中使用 Chrome 通过 Selenium 运行 NaCl 辅助进程,不会出现沙箱错误

    我在 Linux 中通过 Selenium 使用 Chrome 时遇到以下错误 ERROR browser main loop cc 1512 Unable to open X display ERROR nacl helper linux
  • 在 IIS 重写规则中排除路径?

    我有一个将 URL 转换为小写的重写规则 我想排除一个文件夹 但不知道正则表达式 如何从下面的规则中排除 myfolder
  • 在 javascript 中的数组文字上调用 forEach 时出错[重复]

    这个问题在这里已经有答案了 当我使用 Node v6 9 2 运行此代码时会生成错误 var req foo bar forEach prop gt console log prop prop 错误是 TypeError Cannot re
  • 在android中从图库和相机捕获图像

    我首先知道这是一个重复的问题 但我在从画廊或相机捕获图像方面没有问题 我在虚拟项目上创建来检查我的代码 它工作正常 但是当我在我的项目中使用相同的代码时 即使我没有收到任何错误 它也不起作用 一旦我开始活动以获取结果 它就会被取消 但我仍然
  • 如何修复 1 字节 UTF-8 序列的无效字节 1

    我正在尝试使用 java 方法从数据库获取以下 xml 但出现错误 用于解析xml的代码 DocumentBuilderFactory dbf DocumentBuilderFactory newInstance DocumentBuild
  • 我什么时候应该使用一对一关系?

    抱歉这个菜鸟问题 但是是否确实需要与数据库中的表使用一对一关系 您可以在一张表中实现所有必需的字段 即使数据变得非常大 您也可以枚举您需要的列名SELECT声明而不是使用SELECT 你什么时候真正需要这种分离 1 到 0 1 超类和子类之
  • 如何创建模块化 JSF 2.0 应用程序?

    我有一个具有明确定义的界面的应用程序 它使用 CDI 来解析模块 具体来说 它使用 API 接口上的 Instance 注入点来解析模块 并通过接口毫无问题地来回传递各种数据 我故意将 API 和实现分开 模块仅从 API 继承以避免紧密耦
  • 从 Delphi REST 服务器返回图像并在浏览器中显示它

    当您在 Delphi Rest 服务器中使用文件流对象返回图像时 它将不会在浏览器中显示 以下是返回图像的示例方法 function TServerClass Image TFileStream begin Result TFileStre
  • java.lang.RuntimeException:Parcel android.os.Parcel:解组未知类型代码

    我的应用程序中似乎出现了一个奇怪的错误 请参阅GitHub 当我将对象传递给实现的不同活动时 就会发生这种情况Parcelable 我在 Stack Overflow 上检查了其他问题和答案 但无法找到解决方案 我已经尝试过答案here 例
  • List 内的 NavigationLink 适用于 HStack 而不是每个元素

    我正在努力追随组合复杂的接口SwiftUI 指南 但在让 NavigationLink 在 iOS 13 beta 3 和现在的 beta 4 上正常工作时遇到问题 如果您只是下载项目文件并尝试运行它 请单击任何 Lake 图像 什么都不会