当前位置: 首页 > 知识库问答 >
问题:

SwiftUI ScrollView滚动经过具有.id()的元素

公孙宏远
2023-03-14

scrollview被滚动经过给定ID的元素时,有什么方法可以得到通知吗?

例如:

@State var selectedFoodTypeId: UUID? = nil

HStack {
    ForEach(foodTypes) { foodType in
        Text(foodType)
            .foregroundColor(selectedFoodTypeId == foodType.id ? .red : .black)
    }
}

ScrollView {
    ForEach(foodTypesAndRestaurants) { item in
        Text(item.foodType)
            .id(item.foodType.id)
        
        // When ScrollView was just scrolled here, I would like to do the following:
        // withAnimation {
        //      selectedFoodTypeId = item.foodType.id
        // }
        
        ForEach(item.restaurants) { restaurant in
            Text(restaurant)
        }
    }
}

共有1个答案

黎曾笑
2023-03-14

您可以使用.onexprece(perform:{}).onexprece(perform:{})以及附加逻辑。

Text(item.foodType)
  .id(item.foodType.id)
  .onAppear(perform: { })
 类似资料:
  • 问题内容: 在我们的一个内部角度应用程序中,显示了一个许可证文本框。由于内部有很多文本,因此以元素表示的许可证框具有滚动条。 问题: 如何测试元素是否具有滚动? 这是元素的HTML表示形式: 在哪里定义了以下CSS样式: 问题答案: 技巧(最初在这里提出)是比较属性: 该CSS属性指定 元素的内容区域的高度 。内容区域位于元素的填充,边框和边距之内。 与: 的只读属性是一个 元素的含量的高度,其中

  • 问题内容: 我在这样的表格视图中有一个数字列表。 如您所见,数字是重复的。让我们考虑一组重复的数字作为一个组。因此,有一组1,一组2,依此类推。 我想做的是当应用启动时,我需要自动滚动到指定组的开始位置。在进一步解释之前,这是到目前为止的代码。 import UIKit 我为变量分配了值12 。这意味着当应用程序启动时,我希望表格视图自动滚动到 12s组单元格的开始。 但是目前,我的代码执行的是滚

  • 问题内容: 我有一些用PHP生成的元素,我想知道是否可以选择ID不完整的元素,例如: 该类已经习惯了它们的共同点,但是现在我需要单独选择它们,但我不知道整个ID名称。 我可以使用类似: 问题答案: 不使用ID选择器,因为它们需要完整的ID名称,但使用substring属性选择器: 但是,既然您的元素仍然具有属性,那么为什么不向每个元素组添加一个通用类并按该类进行选择呢?您应该能够像生成ID一样使用

  • 在我的身体里我有3

  • 问题内容: 我正在尝试驱动类似于Google Maps的网络地图的一部分,在该地图上,通过鼠标悬停时的滚动来进行放大/缩小。理想情况下,我希望能够执行以下操作: 我在文档中看到的最接近的方法是和,但是这两个方法都不可以滚动。我也尝试通过Javascript将滚动条发送到页面,例如,这似乎没有任何作用。 我怎样才能做到这一点? 问题答案: 要重现/测试鼠标滚轮,您必须通过脚本注入将,和事件发送到顶部

  • 我觉得这可能是一个常见的问题,我想知道是否有任何共同的解决方案。 基本上,我的UITableView拥有每个单元格的动态单元格高度。如果我不在UITableView的顶部,并且我< code > table view . reloaddata(),向上滚动会变得不稳定。 我认为这是因为我在向上滚动时重新加载了数据,UITableView正在重新计算每个可见单元格的高度。如何减轻这种情况,或者如何只