SwiftUI не может открыть подробный экран - PullRequest
0 голосов
/ 21 апреля 2020

Я пробую какое-то простое приложение, которое имеет список элементов и нуждается в открытии подробного представления. Настройка выглядит следующим образом:

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 голосов
/ 21 апреля 2020

Нашел, может быть, кто-то в будущем тоже столкнется с этим: я добавил наблюдателя жестов касания, чтобы переключать клавиатуру при нажатии вне ot if, и этот жест использовался этим наблюдателем, таким образом не позволяя нажимать ячейку.

0 голосов
/ 21 апреля 2020

к сожалению, ваш код не компилировался ... поэтому мне пришлось много комментировать ... но это работает здесь:

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()
                                //                        }
                        }
                    }
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...