Junior — Middle
Como implementar a passagem de um contador num componente View dentro de uma lista para que o seu valor possa ser atualizado de fora?
sobes.tech IA
Resposta da IA
No iOS, se estiver a usar SwiftUI, para passar um contador para um componente View e poder atualizá-lo externamente, deve usar ligação de dados através de @Binding ou estado através de @State e @ObservedObject.
Por exemplo, se tiver uma lista e cada elemento deve mostrar um contador que é atualizado externamente, pode fazer assim:
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
}
}
}
}
Aqui, CounterModel é a fonte de verdade para o contador. Todas as CounterView recebem uma referência ao mesmo objeto e atualizam-se quando o valor muda. Assim, a atualização do contador externamente (por exemplo, através de um botão) refletirá em todos os componentes da lista.
Se desejar que cada elemento tenha o seu próprio contador, pode passar modelos ou valores separados com @Binding.