Sobes.tech
Junior — Middle

Kā īstenot skaitītāja nodošanu View komponentā saraksta iekšpusē, lai tā vērtība varētu tikt atjaunināta no ārpuses?

sobes.tech AI

Atbilde no AI

iOS, ja izmanto SwiftUI, lai nodotu skaitītāju uz View komponentu un ļautu to atjaunināt no ārpuses, ir jāizmanto datu saite caur @Binding vai stāvoklis caur @State un @ObservedObject.

Piemēram, ja jums ir saraksts un katrs elements jāparāda skaitītājs, kas tiek atjaunināts no ārpuses, to var izdarīt šādi:

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
            }
        }
    }
}

Šeit, CounterModel ir patiesība par skaitītāju. Visas CounterView saņem atsauci uz to pašu objektu un tiek atjauninātas, kad mainās vērtība. Tādējādi, ārējā (piemēram, ar pogu) veiktā atjaunināšana tiks atspoguļota visās saraksta komponentēs.

Ja vēlaties, lai katrs elements būtu ar savu skaitītāju, var nodot atsevišķus modeļus vai vērtības ar @Binding.