web-dev-qa-db-fra.com

SwiftUI - utilisation des bascules - journaux de la console: «mode invalide 'kCFRunLoopCommonModes'» - didSet ne fonctionne pas

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. ;-)

3
Kuhlemann
  1. Ignorez cet avertissement, ce sont les composants internes de SwiftUI et n'affectent rien. Si vous souhaitez envoyer vos commentaires à Apple.

  2. 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?")
        }
}
2
Asperi