Я создал следующую структуру, и вот краткий пример моего массива, который я хочу использовать в списке в SwiftUI:
import Foundation
import SwiftUI
struct Rune: Identifiable {
var runeName: String
var runeImage: String
var runeDescription: String
let id = UUID()
}
let runesArray = [Rune(runeName: "Fehu", runeImage: String(("Fehu.png")), runeDescription: "(Description Goes Here"),
Rune(runeName: "Uruz", runeImage: String(("Uruz.png")), runeDescription: "(Description Goes Here"),
Rune(runeName: "Thurisaz", runeImage: String(("Thurisaz.png")), runeDescription: "(Description Goes Here"]
Мои изображения не отображаются, когда я использую следующий код, но мой текст runeName text runeDescription отображается должным образом, когда я щелкаю строку и перехожу в свой DetailView, и я не могу понять, почему:
ContentView:
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
List(runesArray) { rune in
NavigationLink(destination: DetailView(rune: rune)) {
RuneRow(rune: rune)
}
}
.navigationBarTitle("Rune Companion")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct RuneRow: View {
let rune: Rune
var body: some View {
HStack {
Image(rune.runeImage)
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 60, height: 60)
Spacer()
Text(rune.runeName)
.font(.title)
.fontWeight(.bold)
Spacer()
}
}
}
Подробный просмотр:
import SwiftUI
struct DetailView: View {
let rune: Rune
var body: some View {
NavigationView {
VStack {
Spacer()
Image(rune.runeImage)
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: 200, height: 200)
Spacer()
Text(rune.runeDescription)
.padding(.horizontal)
Spacer()
}
.navigationBarTitle(rune.runeName)
.navigationBarTitleDisplayMode(.large)
}
}
}
struct DetailView_Previews: PreviewProvider {
static var previews: some View {
DetailView(rune: runesArray[0])
}
}
Когда я меняю Image(rune.runeImage)
на Image("Fehu")
, изображение Fehu появляется, но заполняет все три строки, как должно, показывая, что мои изображения могут быть успешно загружены. Есть идеи, что я сделал не так?