SwiftUI является функциональным и реактивным, поэтому его вывод полностью отражает состояние. Вам придется хранить и манипулировать состоянием, которое приводит к представлению SwiftUI с желаемым результатом. Представление восстанавливается с нуля каждый раз, когда изменяется его состояние. (Не совсем, так как есть некоторая эффективная дифференциация под капотом, но это хорошая ментальная модель для использования.)
Самый простой способ, который предоставляет SwiftUI, - это оболочка свойства @State
, так что версия того, что вы ' запрос будет выглядеть примерно так:
struct RootView: View {
@State private var numberOfRects = 0
var body: some View {
VStack {
Button(action: {
self.numberOfRects += 1
}) {
Text("Tap to create")
}
ForEach(0 ..< numberOfRects, id: \.self) { _ in
MyRectView()
}
}
}
}
Я предполагаю, что желаемый конечный результат сложнее, но вы можете использовать @State
или использовать свойство, указывающее на отдельный класс, который обрабатывает ваше состояние / модель, помеченные @ObservedObject
упаковкой, чтобы получить то, что вам нужно.