我已经创建了以下结构,下面是我希望在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"]当我使用以下代码时,我的图像没有显示,但当我单击该行并转到我的DetailView时,text runeName text runeDescription按预期显示,但我找不出原因:
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()
}
}
}DetailView:
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的图像确实出现了,但是像它应该做的那样填充了所有三行,显示我的图像可以成功加载。你知道我做错了什么吗?
发布于 2020-07-07 07:47:38
您不需要为图像指定扩展名(.png)。
替换:
runeImage: String(("Fehu.png"))通过以下方式:
runeImage: "Fehu"在runesArray中创建梯段时。
https://stackoverflow.com/questions/62766037
复制相似问题