Sobes.tech
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.