【发布时间】:2020-02-27 03:15:49
【问题描述】:
我有一个以用户列表开头的主从应用程序 -> 他们的城市 -> 他们的城镇。视图的内容工作正常,但我不知道如何调整我的数据流,以便 .navigationBarTitle 反映之前选择的项目。例如如果我选择用户“jimmy”,我希望“jimmy”成为城市列表的标题。
这是我的数据模型:
import SwiftUI
struct UserModel: Codable, Identifiable {
let id: Int
let firstName: String
let lastName: String
let cities: [CityModel]
enum CodingKeys: String, CodingKey {
case id
case firstName = "first_name"
case lastName = "last_name"
case cities
}
}
struct CityModel: Codable, Identifiable {
let id: Int
let name: String
let towns: [TownModel]
}
struct TownModel: Codable, Identifiable {
let id: Int
let name: String
}
这是我的根视图,UserList.swift:
import SwiftUI
struct UserList: View {
var body: some View {
NavigationView {
List(userData) { user in
NavigationLink(destination: CityList(cities: user.cities)) {
UserRow(user: user)
}
}
.navigationBarTitle(Text("Users"))
}
}
}
struct UserList_Previews: PreviewProvider {
static var previews: some View {
UserList()
}
}
这是点击用户打开的 CityList.swift:
import SwiftUI
struct CityList: View {
var thisUser: UserModel
var cities: [CityModel]
var body: some View {
List (cities) { city in
NavigationLink(destination: TownList(towns: city.towns)) {
CityRow(city: city)
}.navigationBarTitle(Text(self.thisUser.firstName))
}
}
}
UserList.swift 的以下行引发了错误,因为它调用的是 CityList 但不考虑 CityList 对“thisUser”的引用。只是我不确定调整它的正确语法是什么。
NavigationLink(destination: CityList(cities: user.cities)) { UserRow(user: user) }
ERROR: Missing argument for parameter 'thisUser' in call
非常感谢任何帮助。
【问题讨论】:
标签: swiftui navigationbar master-detail dataflow