如何在 iOS 17 中使用 `scrollPostition(id:)` 获取 ScrollView 中项目的索引

问题描述 投票:0回答:1

iOS 17 引入的新 ScrollView 修饰符之一是

.scrollPosition(id:)
,它允许我们绑定滚动到视图的 ID。从Apple的文档中,我们可以这样做:

@Binding var items: [Item]
@Binding var scrollPosition: Item.ID?


ScrollView {
    LazyVStack {
        ForEach(items) { item in
            ItemView(item)
        }
    }
    .scrollTargetLayout()
}
.scrollPosition(id: $scrollPosition)

但是假设我们希望

scrollPosition
代表 item 中每个
items
index
。例如,当我们滚动到第一个
ItemView
时,
scrollPosition
应该为0;当我们滚动到第二个
ItemView
时,它应该是1,依此类推。

我们如何在 SwiftUI 中实现这一点(使用此修饰符)?

ios swiftui scrollview
1个回答
0
投票

尝试这种方法,声明

scrollPosition: Int?
, 在
items.enumerated()
循环中使用
ForEach
,以及
id(index)
,例如:

  @Binding var scrollPosition: Int?

  ForEach(Array(items.enumerated()), id: \.1.id) { index, item in
      ItemView(item).id(index)
  }
© www.soinside.com 2019 - 2024. All rights reserved.