J'essaie d'ajouter un rappel à un sélecteur SwiftUI mais je n'arrive pas à l'exécuter. Le didSet ne s'exécute apparemment pas lorsque la valeur du sélecteur change. Voici ce que j'ai essayé jusqu'à présent:
struct ContentView : View {
@State private var picked: Int = 0 {didSet{print("here")}}
var someData = ["a", "b", "c"]
var body: some View {
VStack {
Picker(selection: $picked,
label: Text("")) {
ForEach(0 ..< someData.count) {Text(self.someData[$0]).tag($0)}
}
.pickerStyle(.wheel)
Text("you picked: \(someData[picked])")
}
}
}
vous pouvez utiliser ObservableObject pour le contourner
import SwiftUI
class PickerModel:ObservableObject{
@Published var picked: Int = 0 {didSet{print("here")}}
}
struct Picker_Callback: View {
@ObservedObject var pickerModal = PickerModel()
var someData = ["a", "b", "c"]
var body: some View {
VStack {
Picker(selection: self.$pickerModal.picked,
label: Text("")) {
ForEach(0 ..< someData.count) {Text(self.someData[$0]).tag($0)}
}
//.pickerStyle(.wheel)
Text("you picked: \(someData[self.pickerModal.picked])")
}
}
}