SwiftUI: проблемы с TabView - PullRequest
       70

SwiftUI: проблемы с TabView

0 голосов
/ 21 марта 2020

Я довольно новичок в стремительном сообществе, поэтому я прошу прощения, если это не сложно.

У меня есть следующая проблема: у меня есть приложение, которое выдает следующее предупреждение, так как я перешел на TabView Layout:

"[TableView] Только одно предупреждение: UITableView было приказано расположить видимые ячейки и другое содержимое, не находясь в иерархии представлений (представление таблицы или одно из ее суперпредставлений не было добавлено в окно). Это может привести к ошибкам, заставляя представления внутри табличного представления загружаться и выполнять компоновку без точной информации (например, границ табличного представления, сбора признаков, полей макета, вставок безопасной области и т. д. c), а также может привести к ненужным Снижение производительности из-за дополнительных проходов макета. Установите символическую c точку останова на UITableViewAlertForLayoutOutsideViewHierarchy, чтобы перехватить это в отладчике и посмотреть, что вызвало это, чтобы вы могли вообще избежать этого действия, если это возможно, или отложить его до представления таблицы. был добавлен в окно. Table view: <_TtC7SwiftUIP33_BFB370BA5F1BADDC9D83021565761A4925UpdateCoalescingTableView: 0x7fcc03055600; baseClass = UITableView; frame = (0 0; 414 852); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x600002e25500>; layer = <CALayer: 0x60000200bf20>; contentOffset: {0, 0}; contentSize: {414, 0}; adjustedContentInset: {0, 0, 83, 0}; dataSource: (null)> "

Я успешно воссоздал Проблема с простой структурой (см. ниже). Я был бы очень рад любым предложениям, что здесь происходит:

1) Модель

class PersonList {

    var personList: [Person]

    init() {
        personList = [Person]()
        personList.append(Person(surName: "Jane", name: "Smith"))
        personList.append(Person(surName: "John", name: "Smith"))
    }
}

class Person: Identifiable {

    let id = UUID()
    var surName: String
    var name: String

    init(surName: String, name: String) {
        self.surName = surName
        self.name = name
    }
}

2) Просмотр одной вкладки

struct TestView: View {

    let personList: [Person]

    var body: some View {
        List (personList) { person in
            Text("Hallo \(person.name)")
        }
    }
}

3) Просмотр содержимого, включающий две вкладки (будет более сложным в реальном приложении)

struct ContentView: View {
    var personList = PersonList()

    var body: some View {
        TabView {
            Text("Test")
                .tabItem {
                    Text("Tab 1")
            }
            TestView(personList: personList.personList)
                .tabItem {
                    Text("Tab 2")
            }
        }
    }
}

Проблема возникает, как только вы нажимаете на вкладку 2 и затем go обратно на вкладку 1.

Большое спасибо заранее и наилучшими пожеланиями,

Джулиан

...