1

我有一个 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?

4

1 回答 1

0

我发现的最简单的方法是继承 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];
    }    
}
于 2013-12-12T17:49:14.117 回答