KVO 更新 UITableViewCell
Posted
技术标签:
【中文标题】KVO 更新 UITableViewCell【英文标题】:KVO update UITableViewCell 【发布时间】:2013-10-24 04:13:10 【问题描述】:我有一个 ViewControllerA,您可以使用 AFNetworking
和 setDownloadProgress
下载文件,以根据进度更新我的模型。我还有一个 ViewControllerB,它有一个 UITableView
以及所有传输的列表。
在cellForRowAtIndexPath
里面我观察我的模型
[transfer addObserver:cell
forKeyPath:@"completed"
options:NSKeyValueObservingOptionNew
context:NULL];
这行得通,我可以像
一样阅读进度- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
if ([keyPath isEqualToString:@"completed"])
float val = [[change objectForKey:@"new"] floatValue];
NSLog(@"%f", val);
但我不知道如何使用我的 KVO 更新我的 UITableViewCell?
【问题讨论】:
【参考方案1】:我发现最简单的方法是将 UITableViewCell 子类化,并在那里添加您的观察结果。
@implementation MyCustomCell
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
if ([keyPath isEqualToString:@"completed"])
float val = [[change objectForKey:@"new"] floatValue];
// assuming that you're trying to update a label within your cell
self.progressLabel.text = [NSString stringWithFormat:@"%f %%", val];
【讨论】:
以上是关于KVO 更新 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章
CLLocation 变量不发送 KVO - NSKeyValueObservingOptionNew