【发布时间】:2020-11-23 19:09:39
【问题描述】:
- 我有一个带有非可选
person变量的 DetailView:
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(主屏幕),正在加载人员 ID 列表:
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,但没有用于 DetailView 初始化的
person数据:
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.
// ???
}
}
}
})
}
}
- 有没有人遇到过这个问题以及如何解决?
【问题讨论】:
标签: ios swift swiftui swiftui-list swiftui-navigationlink