SwiftUI падает с элементом списка - PullRequest
2 голосов
/ 22 января 2020

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

[TableView] Только одно предупреждение: UITableView было приказано расположить видимые ячейки и другое содержимое, не находясь в иерархии представления (таблица view или один из его суперпредставлений не был добавлен в окно). Это может привести к ошибкам, заставляя представления внутри табличного представления загружаться и выполнять компоновку без точной информации (например, границ табличного представления, сбора признаков, полей компоновки, вставок безопасной области и т. Д. c), а также приведет к ненужным потерям производительности из-за дополнительные макеты проходит. Создайте символьную c точку останова в UITableViewAlertForLayoutOutsideViewHierarchy, чтобы перехватить это в отладчике и посмотреть, что вызвало это, чтобы вы могли вообще избежать этого действия, если это возможно, или отложить его, пока представление таблицы не будет добавлено в окно. Представление таблицы: <_TtC7SwiftUIP33_BFB370BA5F1BADDC9D83021565761A4925UpdateCoalescingTableView: 0x7ff9ec08b000; baseClass = UITableView; кадр = (0 0; 375 768); clipsToBounds = YES; авторазмер = W + H; жестRecognizers =; слой =; contentOffset: {0, 0}; contentSize: {375, 0}; AdjustContentInset: {0, 0, 83, 0}; dataSource: (null)>

Мне удалось сократить приложение, чтобы найти root этого сообщения, и, похоже, List{} вызывает эти предупреждения. Раздетое приложение - это просто ** приложение с вкладками *, а ContentView.swift файл выглядит следующим образом:

import SwiftUI

struct ContentView: View {
    @State private var selection = 0

    var body: some View {
        TabView(selection: $selection) {
            List {
                Text("text")
                    .font(.title)
            }
            .tabItem {
                VStack {
                    Image("first")
                    Text("First")
                }
            }
            .tag(0)
            Text("Second View")
                .font(.title)
                .tabItem {
                    VStack {
                        Image("second")
                        Text("Second")
                    }
            }
            .tag(1)
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

Кто-нибудь еще испытывал подобное? Может ли кто-нибудь объяснить мне, в каком приложении происходит сбой?

PS: мне трудно отлаживать приложения SwiftUI из-за синтаксиса компоновщика.

...