SwiftUI:预览不显示列表中的内容

  • 本文关键字:列表 显示 SwiftUI swiftui
  • 更新时间 :
  • 英文 :


我在SwiftUI中创建了一个非常简单的测试:

口袋妖怪

struct Pokemon: Identifiable {
let id: Int
let name: String
}

PokemonList

struct PokemonList: View {
@State private var pokemonList: [Pokemon] = []

var body: some View {
List(pokemonList) {
PokemonRow(pokemon: $0)
}
.listStyle(PlainListStyle())
.onAppear {
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
// Here I fill Pokemon list from API
}
}
}

init(_ pokemonList: [Pokemon] = []) {
self.pokemonList = pokemonList
}
}
#if DEBUG
struct PokemonList_Previews: PreviewProvider {
static var previews: some View {
PokemonList([
Pokemon(id: 1, name: "Bulbasaur"),
Pokemon(id: 25, name: "Pikachu"),
Pokemon(id: 150, name: "Mewtwo")
])
}
}
#endif

PokemonRow

struct PokemonRow: View {
var pokemon: Pokemon

var body: some View {
HStack(alignment: .center) {
Text("#(pokemon.id)")    
Text(pokemon.name)
}
.padding()
.frame(height: 50)
}
}
#if DEBUG
struct PokemonRow_Previews: PreviewProvider {
static var previews: some View {
PokemonRow(pokemon: Pokemon(id: 25, name: "Pikachu"))
}
}
#endif

PokemonRow预览工作得很好,API调用也是(视图出现后列表被正确填充),但由于某种原因,PokemonList预览总是显示空内容。为什么呢?

谢谢你的帮助

init(_ pokemonList: [Pokemon] = []) {
self._pokemonList = State(initialValue: pokemonList) // << @State init
}

最新更新