2010-06-24 34 views
0

我已经阅读了大量关于KVO的文档和教程,但是我没有找到任何能够为我的应用程序抽象化的文档和教程。我有一个表格视图,它使用自定义的UITableViewCell类来提供打开/关闭选项的界面。单元格有一个UISwitch,我想“绑定”到我的模型的布尔属性。我希望当单元格被渲染时,它应该为托管对象正确设置控件的on属性,当我翻转该开关控件时,模型对象将更新为新值。将KVO与定制的UITableViewCell和CoreData一起使用

我开始研究它,但我认为合适的第一步不起作用。

[switchControl addObserver:self 
    forKeyPath:@"on" 
    options:0 
    context:NULL]; 

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

回答

1

试试这个:

[switchControl addObserver:self 
    forKeyPath:@"on" 
    options:NSKeyValueObservingOptionNew 
    context:NULL]; 
+0

这是一般来说,不仅仅是一个好的主意,以检查该情境,以确保事件的发生是由您的观察产生的。 – 2010-07-23 17:53:43

+0

这不适合我。我和提问的人有相同的设置。我有一个UITableViewCell,它有一个UISwitch,我希望在切换开关时收到通知。帮助任何人? – 2011-08-25 16:17:56

0

相反的addObserver的,你可以使用addTarget如下:

[switchControl addTarget:self action:@selector(photoSwitchChanged:)forControlEvents:UIControlEventValueChanged]; 

,其中目标函数的定义如下:

- (void)photoSwitchChanged:(UISwitch*)switch { 
}