我有一個List在串列中的每個專案上View都有一個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)}
}
uj5u.com熱心網友回復:
id當您List在每次渲染時為您分配一個新的(就像您這樣做時所做的那樣.id(UUID())),SwiftUI 認為它是一個全新的View. 因此,當您@State通過點擊一個專案來更改您的專案時,SwiftUI 會認為List創建了一個新專案并滾動到頂部。
洗掉.id(UUID())以解決此問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/425578.html
