Почему Picker в SwiftUI работает только один раз - PullRequest
1 голос
/ 02 февраля 2020

Я начинаю с SwiftUI и создаю этот код

struct ContentView: View {

let countries = ["CZ","SK","DE"]
@State private var country = 0

var body: some View {
    NavigationView {
        VStack {
            NavigationLink(destination: SettingsView()) {
                Text("Settings")
            }
            Form {
                Picker("Pick a country", selection: $country) {
                    ForEach(0..<countries.count) { index in
                        Text(self.countries[index])
                    }
                }
                Text(countries[country])
            }
        }
        .navigationBarTitle("UNECE Data")
    }
}
}

, если я выбираю значение из средства выбора, оно правильно возвращает значение обратно в текст, но если я делаю то же действие снова, список значений не показано, и XCode записывает это в консольное окно

TableView Только предупреждение только один раз: UITableView было приказано расположить его видимые ячейки и другое содержимое, не находясь в иерархии представления (представление таблицы или одно из ее суперпредставлений не имеет был добавлен в окно). Это может привести к ошибкам, заставляя представления внутри табличного представления загружаться и выполнять компоновку без точной информации (например, границ табличного представления, сбора признаков, полей компоновки, вставок в безопасной области и т. Д. c), а также приведет к ненужным потерям производительности из-за дополнительные макеты проходит. Создайте символьную c точку останова в UITableViewAlertForLayoutOutsideViewHierarchy, чтобы перехватить это в отладчике и посмотреть, что вызвало это, так что вы можете вообще избежать этого действия, если это возможно, или отложить его, пока представление таблицы не будет добавлено в окно.

Буду признателен за любое предложение.

Ответы [ 2 ]

2 голосов
/ 02 февраля 2020

Да, это известная ошибка, на реальном устройстве это работает. Не только вы раздражаете ...

В вашем случае (чтобы иметь возможность продолжить) свою разработку, просто нажмите "Настройки", затем go назад и сборщик снова готов. Кстати, попробуйте нажать «Настройки», go назад и попробуйте снова. Ссылка «Настройки» ведет себя так же неправильно.

Попробуйте шаблон Master / Detail от Apple, добавьте только одну дату и убедитесь, что он будет работать так же. Как это возможно? Swift runtime больше не является частью приложения (из-за ABI)

Он работает на реальных устройствах с 13.3, последний SDK на текущем Xcode все еще 13.2. (проверьте настройки своего проекта)

Использование другого стиля выбора может помочь.

0 голосов
/ 02 февраля 2020

Это ошибка, введенная в iOS 13, которая, по-видимому, затрагивает только физические устройства. Обновите вашу iOS систему до 13.3, она будет хорошо работать на реальном iPhone, но предупреждение все еще там

...