- У меня есть DetailView с необязательной переменной
person
:
struct DetailView: View {
let person: Person
var body: some View {
VStack {
Text("Person Name: \(person.name)")
Text("Person Email: \(person.email)")
}
}
}
class Person: Identifiable {
let id = UUID()
let name: String
let email: String
init(name: String, email: String) {
self.name = name
self.email = email
}
}
- У меня есть ContentView (домашний экран), загружающий список идентификаторов людей:
struct ContentView: View {
private let personIDs: [String] = ["xx1", "xx2", "xx3", "xx4", "xx5"]
var body: some View {
NavigationView(content: {
List(self.personIDs, id: \.self) { personID in
Text("personID: \(personID)")
}
})
}
}
- Проблема здесь в том, что когда я нажимаю на строку, я хочу получить данные о человеке с сервера, прежде чем нажимать на DetailView, но с этим возникают проблемы:
struct ContentView: View {
private let personIDs: [String] = ["xx1", "xx2", "xx3", "xx4", "xx5"]
var body: some View {
NavigationView(content: {
List(self.personIDs, id: \.self) { personID in
Text("personID: \(personID)")
.onTapGesture {
// Load Person data (by `personID`) from server.
// How can I push to DetailView here?
}
}
})
}
}
- Я пробовал использовать NavigationLink, но нет
person
данных для инициализации DetailView:
struct ContentView: View {
private let personIDs: [String] = ["xx1", "xx2", "xx3", "xx4", "xx5"]
var body: some View {
NavigationView(content: {
List(self.personIDs, id: \.self) { personID in
// `person` argument is non-optional
// no `person: Person` data here
NavigationLink(destination: DetailView(person: /* ??? */)) {
Text("personID: \(personID)")
.onTapGesture {
// Load Person data (by `personID`) from server.
// ???
}
}
}
})
}
}
- Кто-нибудь сталкивался с этой проблемой и как ее решить?