我是 Swift 和 SwiftUI 的初学者。我正在尝试将 ID 设置为 ScrollView 中的 View,这样我就可以使用 ScrollViewReader 滚动到顶部位置(第一项)。我遇到的困难是当我尝试获取数组的索引时,我收到错误Argument类型“XXX”应为类或类约束类型的实例。我该如何解决这个问题?谢谢
import SwiftUI
struct PokedexListView: View {
let pokemons: [Pokemon]
let hasMoreData: Bool
var fetchListener: () -> Void
var body: some View {
NavigationView {
ScrollViewReader { scrollView in
ScrollView {
LazyVStack {
ForEach (pokemons) { pokemon in
PokemonCellView(pokemon: pokemon)
.id(self.getID(pokemon: pokemon))
}
if hasMoreData {
LoadingFooterView()
.onAppear { fetchListener() }
}
}
}
.overlay(
ScrollTopBtnView(toTop: { scrollView.scrollTo(0) })
.padding(.trailing)
.padding(.bottom, 80),
alignment: .bottomTrailing
)
.navigationTitle("Pokedex")
}
}
}
func getID(pokemon: Pokemon) -> Int {
return pokemons.firstIndex { p in p === pokemon } ?? -1
}
}
Run Code Online (Sandbox Code Playgroud)
Sh_*_*han 10
===用。。。来代替==
return pokemens.firstIndex { p in p.id == pokemon.id } ?? -1
Run Code Online (Sandbox Code Playgroud)
===用于比较非原始/结构数据类型的对象,或使pokemon类型class不是struct
| 归档时间: |
|
| 查看次数: |
3973 次 |
| 最近记录: |