Я создал приложение с вкладками, которое состоит из 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 из-за синтаксиса компоновщика.