IOS UI-- KVO笔记

来源:互联网 发布:java如何解压zip文件 编辑:程序博客网 时间:2024/06/04 19:34
KVO 是通过观察对象中的某个属性的变化, 从而触发某个方法
控制器作为观察者(c), 观察数据模型(m)的变化, 从而可以修改视图(v)的变化

观察model中的属性, 发生变化后, 让图片显示到cell上
思路:
1.先明确观察着和被观察者(和cell对应的model中的属性, 并且是一个可以改变的, 图片从无到有)
2.如何让图片从无到有
肯定是请求的, 用封装好的ImageDownloader去请求
3.可以给model写一个方法, 去请求图片(方法中使用ImageDownloader对象)
4.这个model请求方法怎么写?可以让图片加载出来
5.从无到有之后, 触发观察者方法
6.方法中把model中的图片放到对应的cell上
7.移除观察者

self.yongFei = [[SiCong alloc] init];
_yongFei.hobby = @“年少不同”;
// 观察一下, 永飞的兴趣属性
// addObserver 添加一个观察者
// forKeyPath 被观察者的某个属性
//  options  观察的变化(新的, 老的)
// context 可以是携带的参数, 可以是空的
// 观察者, self代表控制器(c)
// 被观察者, @“hobby"代表model对象(m)的属性
// 添加两个枚举值, 中间加个|
[self.yongFei addObserver:self forKeyPath:@“hobby” options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:@“呵呵”];

通过button改变yongFei属性

// 如果观察的某个属性, 发生了变化, 就触发该方法
- (void)observeValueForKeyPath:(NSString)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
keyPath  被观察的属性, object 被观察属性的对象  change[@“new”] 更改的新值和旧值组成的字典  context 携带的参数
// 取消观察者
[object removeObserver:self forKeyPath:@“hobby”];
}
0 0