Search code examples
iphoneioskey-value-observinguistepper

How to implement KVO on UIStepper


i am creating small demo of KVO. As per my knowledge KVO use to notify when property value is changes. I want to implement KVO on UIStepper. I want to notify when user change value of UIStepper. I did some code on that as follows.

ViewController.h

@interface ViewController : UIViewController
{
   IBOutlet UIStepper *stepper;
}

@property NSInteger intToObserve;

@end

ViewController.m

@interface ViewController ()

@end

@implementation ViewController
@synthesize intToObserve;

- (void)viewDidLoad
{
    [super viewDidLoad];
    stepper.minimumValue = 0;
    stepper.maximumValue = 1000;
    [self addObserver:self forKeyPath:@"intToObserve" options:NSKeyValueObservingOptionNew context:nil];
}

- (IBAction)valueChanged:(UIStepper *)sender
{
    double value = [sender value];
    intToObserve = value;
}

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

Problem is that when i hit plus button stepper value is changed but my notification method did not received any notification or even i set break point there but control not goes there. means -(void)observeValueForKeyPath not called.

Please suggest some idea, what i am doing wrong or to work this what is another solution ??

Thanks in adv.


Solution

  • You need to change it via the setter method or the notification will not fire. Change

    intToObserve = value;
    

    to

    self.intToObserve = value;