Sobes.tech
Назад к вопросам
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.