Назад к вопросам
Junior — Middle
76
Как реализовать передачу счетчика в компонент View внутри списка так, чтобы его значение могло обновляться извне?
Ответ от нейросети
sobes.tech 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.