是否有可能创建一个列表,使每一行链接到SwiftUI不同的json文件



我有一个列表视图,并且正在查看是否有可能使每一行导航到使用不同JSON文件的列表视图。如果没有,是否有其他的解决方法?这是我目前拥有的代码,并试图切换"区域"。在navigationLink中插入新的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
}

您可以创建codable结构为您拥有的每种JSON文件类型创建。把它们放到父目录中结构作为可选的。使用此父结构的数组创建List,并将每个项发送到相应的行详细信息视图。在行详细信息视图中,检查任何子结构是否有任何值或nil。

假设你有狗和猫类型的JSON。现在创建两个子结构体name

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)
} 

最新更新