UISwitch und KVO

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UISwitch und KVO

    zum Glück ist freitag

    ich habe ein paar UISwitch, die der Benutzer bisher alle einzelnd touchen musste um alle an/aus zu machen
    also nun ein Switch der alle auf einmal schaltet

    kein Problem: masterSwitch valueChange und die anderen Switch entsprechend setzen
    die einzelnen Switch haben aber auch ein target und EventValueChange, der wird aber nicht ”gefeuert” wenn oneSwitch.on = oder setOn
    heißt die aktion die durch das umschalten erledigt werden soll passiert nicht

    jetzt hab ich gedacht gut KVO auf die switches
    [self.masterSwitch addObserver:self forKeyPath:@"on" options:NSKeyValueObservingOptionNew context:NULL];

    wieso wird observeValueForKeyPath nicht aufgerufen wenn ich den switch touch oder per setOn den Value ändere?

    ?( ?( ?(
    Ich weiß nicht immer wovon ich rede aber ich weiß das ich Recht habe. :saint:
  • Warum schickst du den einzelnen Switches nicht einfach eine Notification wenn sich der Zustand des Masterswitsches ändert? Bzw um es genauer zu formulieren. Sende eine MasterSwitchHasChangedNotification wenn der MasterSwitch sich geändert hat und lass deine anderen Switches auf diese Notification reagieren.

    GRuß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Ich finde es stylistisch aber schöner wenn der MasterSwitch nur "Bescheid" sagt und die anderen Switches sich selber darum kümmern was zu tun ist, als alle Aktionen in den MasterSwitch rein zu packen.

    Aber das ist ja Ansichtssache.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • ich mach jetzt ne Kombi aus beidem

    masterSwitch verschickt die Notification
    und darauf hin wird der codeSnippet von macmoonshine ausgeführt

    @Thallius was ich meinte mit unschön war
    ich hab eine methode X die das machen soll was in der valueChange ist, die valueChange ruft methode X auf und die Notification ruft auch methode X auf , durch das sendActions.... spar ich mir das weil so die valueChange aufgerufen wird
    Ich weiß nicht immer wovon ich rede aber ich weiß das ich Recht habe. :saint:
  • Dein Grundproblem ist, dass du KVO auf ein View anwendest. Ein View ist abhängig vom Controller oder Model, nicht umgekehrt.

    Wenn du es also wirklich sauber machen willst, bilde den Zustand als Properties im Controller/Model ab und lasse den View das observieren. Oder überschreibe gleich die Setter im Controller/Model. Dann ist es halt weniger generisch, was aber bei Entwicklung einer konkreten App jetzt kein Drama ist.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?