SwiftUI无法打开详细信息屏幕

时间:2020-04-21 11:47:14

标签: ios swift swiftui

我正在尝试一个简单的应用程序,该应用程序具有项目列表,并且需要打开“详细信息”视图,设置如下所示:

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在一个单元格中垂直放置两个项目。我该如何实现?

2 个答案:

答案 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外部轻按时可以切换键盘,并且该手势已被该观察器占用,因此不会让该单元格被按下。