Получение предупреждения UITableView во время выполнения (один раз). Должен ли я быть обеспокоен? - PullRequest
0 голосов
/ 11 января 2020

Сценарий: Представление с вкладками с четырьмя вкладками, которые представляют четыре вхождения одного и того же представления (EndPointView) с различным контекстом (разные результаты / формат).

Примечание: поставляемый EndPointView в настоящее время является заполнителем; должен по динамике c за вкладку.

Концерн: При смене вкладок я получаю одноразовое время выполнения UITableView (см. Ниже).

import SwiftUI

struct ContentView: View {
    @EnvironmentObject var settings: Settings
    @State private var selectedTab: Int = 1
    @State private var endpointView = EndPointView()

    var body: some View {
        TabView(selection: self.$settings.endpointSection) {
            endpointView
                .tabItem({ TabSystemLabel(imageName: "house.fill", label: "Home") })
                .tag(1)

            // ---------------------------------
            endpointView
                .tabItem({ TabLabel(imageName: "SmallDrunk", label: "Drunk") })
                .tag(2)

            // ---------------------------------
            endpointView
                .tabItem({ TabLabel(imageName: "LightbulbTabIcon", label: "lightbulb") })
                .tag(3)

            // ---------------------------------
            endpointView
                .tabItem({ TabLabel(imageName: "tinySwift", label: "Search") })
                .tag(4)
        }
    }

    // ================================================================================

    struct TabSystemLabel: View {
        let imageName: String
        let label: String

        var body: some View {
            HStack {
                Image(systemName: imageName)
                Text(label)
            }
        }
    }

    struct TabLabel: View {
        let imageName: String
        let label: String

        var body: some View {
            HStack(spacing: 10.0) {
                Image(imageName)
                Text(label)
            }
        }
    }
}

import SwiftUI

struct EndPointView: View {
    @EnvironmentObject var settings: Settings

    var body: some View {
        Form {
            Text("Chosen One: \(settings.endpointSection)")
            Text("Row Two")
            Text("Row Three")
            Text("Row Four")

        }.onAppear {
            print("*** EndPointView ***")
        }
    }

    func doSomething() {}
}

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

Это нормально? Следует игнорировать это? Способ устранения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...