SwiftUI 列表在点击查看时滚动到顶部 sheet

SwiftUI List scrolls to the top on tapping to view sheet

我的 View 中有一个 List,它在列表中的每个项目上都有一个 onTapGesture,设置为显示单独的 sheet View 并将选定的对象传递给它以显示更多信息。

信息被传入,但每次我点击列表中的项目时,它都会显示 sheet,但一直滚动到 List 的顶部,有人知道吗是否有解决此问题的方法,或者它只是一个错误?

代码如下:

@State var selectedItem: Item = Item()
@State var showPopup = false

var body: some View {

  VStack{
            List(items, id: \.self) {item in
                ItemCard(Item: item)
                    .contentShape(Rectangle())
                    .onTapGesture(){
                        self.selectedItem = item
                        self.showPopup = true
                    }
            }.id(UUID())
        }.sheet(isPresented: $showPopup) {ItemDetails(i:selectedItem)}
}

当您在每次渲染时为您的 List 分配一个新的 id(就像您在 .id(UUID()) 时所做的那样),SwiftUI 认为它是一个全新的 View.因此,当您通过点击一个项目来更改 @State 时,SwiftUI 认为会创建一个新的 List 并滚动到顶部。

删除 .id(UUID()) 以解决此问题。