2010-08-23 5 views
1

Une idée comment puis-je ajouter ma classe de contrôleur en tant qu'observateur pour mon curseur de classe View?Comment ajouter un observateur sur un UISlider

Je suis en train de parvenir par voie observateur: J'appelle

[self addObserver:myView forKeyPath:@"myView.mySlider.value" options:NSKeyValueObservingOptionNew context:NULL]; 

et dans le même fichier contrôleur méthode viewDidLoad intérieur de mon contrôleur je suis d'exécution:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 
    if ([keyPath isEqualToString:@"myView.mySlider.value"]) { 
     myView.myImgView.animationDuration = [[change valueForKey:NSKeyValueObservingOptionNew] intValue]; 
    } 
} 

Mais mon application est s'écraser. S'il vous plaît aider

+1

Avez-vous des messages d'erreur lorsque l'application plante? :) – willcodejavaforfood

+0

Veuillez modifier la trace de la pile et toute sortie de la console du débogueur dans votre question. –

Répondre

1

J'ai eu le problème. Je posais l'observateur à tort. Au lieu d'appeler la méthode addObserver sur moi-même, je suis supposé l'appeler sur l'objet que j'ai besoin d'observer.

0

Connectez le curseur à un IBAction comme vous le feriez avec un bouton. L'action est appelée chaque fois que le curseur change de valeur. Si vous souhaitez être averti dans une autre classe de valeurs de curseur modifiées, envoyez un NSNotification dans votre IBAction et inscrivez-vous à cette notification dans d'autres cours.

+0

J'essaye d'accomplir ceci par l'intermédiaire de la manière d'observateur: À l'intérieur de la méthode viewDidLoad de mon contrôleur J'appelle [options de self addObserver: myView forKeyPath: @ "myView.mySlider.value": NSKeyValueObservingOptionNew context: NULL]; et dans le même fichier contrôleur je suis d'exécution: - (void) observeValueForKeyPath: (NSString *) KeyPath ofObject: (id) changement d'objet: (NSDictionary *) contexte de changement: (void *) contexte { \t \t si ([keyPath isEqualToString: @ "myView.mySlider.value"]) { \t \t myView.myImgView.animationDuration = [[modifier la valeurForKey: NSKeyValueObservingOptionNew] intValue]; \t \t \t}} Mais mon application se bloque. S'il vous plaît aider. – Abhinav

+0

Veuillez formater ce code de manière lisible. – tobiasbayer

+0

À l'intérieur de mon contrôleur viewDidLoad ==> [self addObserver: myView forKeyPath: @ "myView.mySlider.value" options: NSKeyValueObservingOptionNew contexte: NULL]; ==== intérieur mon avis contrôleur classe ===> - (void) observeValueForKeyPath: (NSString *) KeyPath ofObject: (id) changement d'objet: (NSDictionary *) contexte de changement: (void *) {contexte \t si ([KeyPath isEqualToString: @ "myView.mySlider.value"]) { \t \t myView.myImgView.animationDuration = [[modifier valueForKey: NSKeyValueObservingOptionNew] intValue]; \t}} – Abhinav

Questions connexes