我正在创建 KVO
的小型演示。据我所知,KVO
用于在属性值发生更改时发出通知。我想在 UIStepper
上实现 KVO
。我想在用户更改 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
未调用。
请提出一些想法,我做错了什么或者要解决这个问题,另一个解决方案是什么??
感谢副词。
最佳答案
您需要通过 setter 方法更改它,否则通知将不会触发。变化
intToObserve = value;
到
self.intToObserve = value;
关于iphone - 如何在UIStepper上实现KVO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17205880/