Сценарий: Представление с вкладками с четырьмя вкладками, которые представляют четыре вхождения одного и того же представления (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}; источник данных: (ноль)>
Это нормально? Следует игнорировать это? Способ устранения