我正在尝试一个简单的应用程序,该应用程序具有项目列表,并且需要打开“详细信息”视图,设置如下所示:
var body: some View {
NavigationView {
Form {
Section {
List {
ForEach(range, id: \.self) { number in
NavigationLink(
destination: DetailView(city: cities[number])) {
VStack(alignment: .leading) {
Text("\(cities[number].name), \(cities[number].country)")
Text("lat:\(cities[number].coord.lat) lon:\(cities[number].coord.lon)").font(.footnote).foregroundColor(.gray)
}
}
}
Button(action: loadMore) {
Text("")
}
.onAppear {
DispatchQueue.global(qos: .background).asyncAfter(deadline: DispatchTime(uptimeNanoseconds: 10)) {
self.loadMore()
}
}
}
}
}
.navigationBarTitle("City list")
.onTapGesture { UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to:nil, from:nil, for:nil) }
}
}
代码会编译并运行,列表右侧没有任何指针,但是尝试打开它无效。我需要VStack在一个单元格中垂直放置两个项目。我该如何实现?
答案 0 :(得分:0)
不幸的是,您的代码不可编译...因此我不得不注释掉很多...但这在这里有效:
struct DetailView : View {
var body: some View {
Text("Detail")
}
}
struct ContentView : View {
var data = ["a", "b", "c"]
var body: some View {
NavigationView {
Form {
Section {
List {
ForEach(data, id: \.self) { number in
NavigationLink(
destination: DetailView()) {
VStack(alignment: .leading) {
Text("a")
Text("b").font(.footnote).foregroundColor(.gray)
}
}
}
// Button(action: loadMore) {
// Text("")
// }
.onAppear {
// DispatchQueue.global(qos: .background).asyncAfter(deadline: DispatchTime(uptimeNanoseconds: 10)) {
// self.loadMore()
// }
}
}
}
}
}
}
}
答案 1 :(得分:0)
找到它,也许将来有人也会遇到它: 我添加了一个轻击手势观察器,如果在ot外部轻按时可以切换键盘,并且该手势已被该观察器占用,因此不会让该单元格被按下。