如何解决是否可以创建一个列表,使每一行链接到 SwiftUI 中的不同 json 文件
我有一个列表视图,正在查看是否可以将每一行导航到使用不同 JSON 文件的列表视图。如果没有,是否有其他解决方法?这是我目前拥有的代码,并试图将导航链接中的“区域”切换到新的 JSON 文件,但很快意识到它不起作用。
NavigationView {
Group {
List {
ForEach(regions) { region in
NavigationLink(destination: RegionListView(regions: region)) {
RegionButtonView(regions: region)
}
} //: LOOP
} //: LIST
} //: GROUP
JSON 文件链接到区域。当我单击特定区域时,我希望它带我到另一个使用不同 JSON 文件创建的列表。这是我用来解码链接到列表循环的 JSON 文件的模型。
struct Region: Codable,Identifiable {
let id: Int
let name: String
let image: String
}
这是我只想让其中一行转到的 JSON 文件。总而言之,我想让每一行导航到使用不同 JSON 文件的视图。
struct SClocations: Codable,Identifiable {
let id: Int
let name: String
let headline: String
let description: String
let link: String
let image: String
let latitude: Double
let longitude: Double
let address: String
}
解决方法
您可以为您拥有的每种类型的 JSON 文件创建一个 子 可编码 结构。将它们放在 parent 结构中作为可选。使用此父结构的数组创建 List 并将每个项目发送到相应的行详细信息视图。在行详细信息视图中,检查是否有任何子结构具有任何值或为零。
假设您有 Dog 和 Cat 类型的 JSON。现在创建两个子结构名称
struct Dog: Codable,Hashable {
.....
.....
}
struct Cat: Codable,Hashable {
.....
.....
}
现在,创建父结构体,Animal 如下
struct Animal: Codable,Hashable {
var cat: Cat?
var dog: Dog?
}
列表如下:
var animals = [Animal]
List {
ForEach(animals) { animal in
NavigationLink(destination: RegionListView(regions: animal)) {
RegionButtonView(regions: region)
}
}
}
现在,在 RegionListView 中,
if let dog = animal.dog {
showDogListView(dog)
}else if let cat = animal.cat {
showCatListView(cat)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。