如何解决SwiftUI中的分组列表从swift文件导入数据
我可以使用以下代码在SwiftUI中创建分组列表:
import SwiftUI
struct ContentView: View {
var body: some View {
List {
Section(header: Text("Freyr / Freya's Aett")) {
}
Section(header: Text("Heimdall's Aett")) {
}
Section(header: Text("Tyr's Aett")) {
}
Section(header: Text("Additional Runes")) {
}
}.listStyle(GroupedListStyle())
}
}
我有一个单独的swift文件,将数据存储在Arrays中,但是无法像在Storyboards中使用以下代码那样将其导入到列表中。
import Foundation
import SwiftUI
struct Rune: Identifiable {
var runeName: String
var runeImage: String
var runeDescription: String
let id = UUID()
}
//MARK: - Runes Array Standard Orientation
var runeTitle = [["Freyr/Freya's Aett"],["Heimdall's Aett"],["Tyr's Aett"],["Additional Runes"]]
let runesArray = [[Rune(runeName: "Fehu",runeImage: String(("Fehu")),runeDescription: "Description Goes Here")],[Rune(runeName: "Hagalaz",runeImage: String(("Hagalaz")),[Rune(runeName: "Tiwaz",runeImage: String(("Tiwaz")),[Rune(runeName: "Blank Rune",runeImage: String(("Blank")),runeDescription: "Description Goes Here")]]
解决方法
您只需要一种方法来识别每个部分中的内容。
这种特殊的方法效率很低,因为它贯穿runesArray
中每个部分的每个项目,但是您可以看到正在发生的事情,然后处理数据。
import SwiftUI
struct SectionedList: View {
var body: some View {
List {
Section(header: Text(runeTitle[0][0])) {
ForEach(runesArray,id: \.id){rune in
if rune.runeTitle == runeTitle[0][0]{
Text(rune.runeName)
}
}
}
Section(header: Text(runeTitle[1][0])) {
ForEach(runesArray,id: \.id){rune in
if rune.runeTitle == runeTitle[1][0]{
Text(rune.runeName)
}
}
}
Section(header: Text(runeTitle[2][0])) {
ForEach(runesArray,id: \.id){rune in
if rune.runeTitle == runeTitle[2][0]{
Text(rune.runeName)
}
}
}
Section(header: Text(runeTitle[3][0])) {
ForEach(runesArray,id: \.id){rune in
if rune.runeTitle == runeTitle[3][0]{
Text(rune.runeName)
}
}
}
//This is another way to do it.
/*
ForEach(0..<runeTitle.count){idx in
Section(header: Text(runeTitle[idx][0])) {
ForEach(runesArray,id: \.id){rune in
if rune.runeTitle == runeTitle[idx][0]{
Text(rune.runeName)
}
}
}
}
*/
}.listStyle(GroupedListStyle())
}
}
struct Rune: Identifiable {
var runeName: String
var runeImage: String
var runeDescription: String
var runeTitle: String
let id = UUID()
}
//MARK: - Runes Array Standard Orientation
var runeTitle = [["Freyr/Freya's Aett"],["Heimdall's Aett"],["Tyr's Aett"],["Additional Runes"]]
let runesArray = [Rune(runeName: "Fehu",runeImage: String(("Fehu")),runeDescription: "Description Goes Here",runeTitle: runeTitle[0][0]),Rune(runeName: "Hagalaz",runeImage: String(("Hagalaz")),runeTitle: runeTitle[1][0]),Rune(runeName: "Tiwaz",runeImage: String(("Tiwaz")),runeTitle: runeTitle[2][0]),Rune(runeName: "Blank Rune",runeImage: String(("Blank")),runeTitle: runeTitle[3][0])]
我在您的runeTitle
结构中添加了Rune
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。