2013-01-17 64 views
0

我有一個存儲在數組中的NewsItem對象的數據源的UITableView。在我的NewsItem對象中,我有一個名爲'imageState'的BOOL,我想跟蹤它。我想要使​​用KVO,以便當這個imageState的值發生變化時,通知具有NewsItem數組的UIViewController,然後執行一些操作(即:重新加載單元格或其他)。我該如何做這樣的事情?它首先是可行的嗎?數據源中的KVO問題

回答

1

可以在TableViewController添加觀察者,這樣

[self addObserver:newsItemObject forKeyPath:@"imageState" options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) context:nil]; 

將observering的對象,當它改變它會調用這個方法,你應該實現以下這種方法:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 
{ 
NSLog(@"%@ \n %@ \n %@ \n ",keyPath,object,change); 
// do your things 
} 

如果類NewsItem是你的類,我認爲它是更好的使用委託或通知。 KVO不是一個更好的方法。

+0

爲什麼KVO不是一個好選擇? – adit

+0

@adit我認爲KVO更好地觀察標準庫中或無法修改的類中的var。 –