2010-06-24 3 views
0

J'ai lu une tonne de documentation et de didacticiels sur KVO, mais je n'en ai trouvé aucun que j'ai pu extraire pour mon application. J'ai une vue de table qui utilise une classe UITableViewCell personnalisée pour fournir une interface pour activer/désactiver les options. La cellule a un UISwitch que je voudrais "lier" aux propriétés booléennes de mon modèle. Je voudrais que lorsque la cellule est rendue, elle doit définir la propriété on du contrôle de façon appropriée pour l'objet géré et lorsque j'applique ce contrôle de commutateur, l'objet de modèle mettra à jour à la nouvelle valeur.Utilisation de KVO avec UITableViewCell et CoreData personnalisés

J'ai commencé à travailler dessus, mais la première étape de ce que je pensais être approprié ne fonctionne pas.

[switchControl addObserver:self 
    forKeyPath:@"on" 
    options:0 
    context:NULL]; 

- (void)observeValueForKeyPath:(NSString *)keyPath 
        ofObject:(id)object 
        change:(NSDictionary *)change 
        context:(void *)context 
{ 
    NSLog(@"value changed"); 
} 

Répondre

1

Essayez ceci:

[switchControl addObserver:self 
    forKeyPath:@"on" 
    options:NSKeyValueObservingOptionNew 
    context:NULL]; 
+0

Il est généralement une bonne idée de ne pas seulement passer dans un contexte, bu t vérifier dans ce contexte pour s'assurer que l'événement qui arrive est généré par votre observation. –

+0

cela n'a pas fonctionné pour moi. J'ai la même configuration que le gars qui pose la question. J'ai un UITableViewCell qui a un UISwitch que je voudrais être notifié quand le commutateur est basculé. Aider quelqu'un? –

0

Au lieu de addObserver vous pouvez utiliser addTarget comme ci-dessous:

[switchControl addTarget:self action:@selector(photoSwitchChanged:)forControlEvents:UIControlEventValueChanged]; 

où la fonction cible est définie comme suit:

- (void)photoSwitchChanged:(UISwitch*)switch { 
} 
Questions connexes