Junior — Middle
Как да реализираме предаването на брояч в компонент View вътре в списък така, че неговата стойност да може да се актуализира отвън?
sobes.tech AI
Отговор от AI
В iOS, ако използвате SwiftUI, за да предадете брояч към компонент View и да го актуализирате отвън, трябва да използвате обвързване на данни чрез @Binding или състояние чрез @State и @ObservedObject.
Например, ако имате списък и всеки елемент трябва да показва брояч, който се актуализира отвън, можете да направите така:
import SwiftUI
class CounterModel: ObservableObject {
@Published var count: Int = 0
}
struct CounterView: View {
@ObservedObject var counter: CounterModel
var body: some View {
Text("Count: \(counter.count)")
}
}
struct ContentView: View {
@StateObject var counter = CounterModel()
var body: some View {
VStack {
List(0..<5) { _ in
CounterView(counter: counter)
}
Button("Increment") {
counter.count += 1
}
}
}
}
Тук CounterModel е източникът на истина за брояча. Всички CounterView получават препратка към един и същ обект и се актуализират при промяна на стойността. По този начин, актуализацията на брояча отвън (например, с бутон) ще се отрази във всички компоненти на списъка.
Ако искате всеки елемент да има свой собствен брояч, можете да предавате отделни модели или стойности с @Binding.