iphone - 如何在UIStepper上实现KVO

标签 iphone ios key-value-observing uistepper

我正在创建 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/

相关文章:

ios - self.variable 和 _variable 的区别,关于 KVO

ios - 如果 CoreData NSPersistentContainer 内容被修改,使用 KVO 触发一个 Action

ios - 使用 UUID 唯一标识 iPhone 设备

ios - Xcode/iOS 自动委托(delegate)分配...一个错误?

iphone - 任何人都知道基于Cocoa Touch SQL数据库的应用程序的好教程

iphone - 处理 HTTP post json 请求的 Web 服务器

ios - 线程运行后快速更改线程 qualityOfService/priority

ios - Xcode 丢失语法高亮显示并收到 .m 文件的 DVTAsertions 警告

ios - 检查是否有效的 url WebView Swift