Список SwiftUI не показывает изображения

Я создал следующую структуру, и вот краткий пример моего массива, который я хочу использовать в списке в 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 появляется, но заполняет все три строки, как должно, показывая, что мои изображения могут быть успешно загружены. Есть идеи, что я сделал не так?


person John Doe    schedule 06.07.2020    source источник


Ответы (1)


Вам не нужно указывать расширение (.png) для ваших изображений.

Заменять:

runeImage: String(("Fehu.png"))

с участием:

runeImage: "Fehu"

когда вы создаете Руны в runesArray.

person pawello2222    schedule 06.07.2020
comment
удаление расширения .png устранило эту проблему. - person John Doe; 07.07.2020