您的位置:首页 > 其它

观察者KVO

2015-09-01 19:36 288 查看

实观察者的回调方法现

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
// 根据观察的内容拿到图片
UIImage *image = [change objectForKey:NSKeyValueChangeNewKey];

NSIndexPath *indexPath = (__bridge NSIndexPath *)context;

// 拿到对应的cell
TableViewCell *cell = (TableViewCell *)[self.mainTableView cellForRowAtIndexPath:indexPath];

// 判断这个 cell 是否正在显示
NSArray *visibleCellArray = [self.mainTableView visibleCells];

if ([visibleCellArray containsObject:cell]) {
cell.pictureImageView.image = image;
}

// 移除观察者(modal 通知控制器不要在继续观察)
[object removeObserver:self forKeyPath:@"image"];
}


// 给 modal 注册观察者
// context 传出的 indexpath 是为了在观察者的回调方法里面拿到对应的cellint
[model addObserver:self forKeyPath:@"image" options:(NSKeyValueObservingOptionNew) context:(__bridge_retained void *)(indexPath)];

[cell setCellModel:model];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: