如何在UIStepper上实现KVO

时间:2013-06-20 05:23:26

标签: iphone ios key-value-observing uistepper

我正在创建KVO的小型演示。据我所知,KVO用于在属性值发生变化时通知。我想在KVO上实施UIStepper。我想在用户更改UIStepper的值时通知。我做了一些代码如下。

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

问题是,当我点击加按钮步进值改变但我的通知方法没有收到任何通知,甚至我设置了断点但控制不去那里。表示未调用-(void)observeValueForKeyPath

请提出一些想法,我做错了什么或者解决这个问题是什么?

先谢谢。

1 个答案:

答案 0 :(得分:1)

您需要通过setter方法更改它,否则通知不会触发。变化

intToObserve = value;

self.intToObserve = value;