J'ai un problème général lors de l'utilisation des bascules avec SwiftUI. Chaque fois que je les utilise, j'obtiens cette erreur de console:
mode non valide 'kCFRunLoopCommonModes' fourni à CFRunLoopRunSpecific - pause sur _CFRunLoopError_RunCalledWithInvalidMode pour déboguer. Ce message n'apparaîtra qu'une fois par exécution.
De plus, didSet n'imprime rien lorsque j'appuie sur la bascule du simulateur. Quelqu'un a-t-il une idée, ou est-ce un bug SwiftUI?
D'autres questions liées à StackOverflow qui datent de quelques mois ne semblent pas trouver de solution.
import SwiftUI
struct ContentView: View {
@State private var notifyCheck = false {
didSet {
print("Toggle pushed!")
}
}
var body: some View {
Toggle(isOn: $notifyCheck) {
Text("Activate?")
}
}
}
S'il s'agit d'un bogue, je me demande quelle est la solution de contournement pour les bascules. Ce n'est pas comme si je serais la première personne à utiliser des bascules dans iOS. ;-)
Ignorez cet avertissement, ce sont les composants internes de SwiftUI et n'affectent rien. Si vous souhaitez envoyer vos commentaires à Apple.
didSet
ne fonctionne pas, car self
here (as View
struct) est immuable, et @State
est juste un wrapper de propriété qui, via un setter non mutant, stocke la valeur encapsulée en dehors de self
.
pdate: faire quelque chose sur bascule
@State private var notifyCheck = false
var body: some View {
let bindingOn = Binding<Bool> (
get: { self.notifyCheck },
set: { newValue in
self.notifyCheck = newValue
// << do anything
}
)
return Toggle(isOn: bindingOn) {
Text("Activate?")
}
}