cocoa 绑定

论坛 期权论坛 脚本     
已经匿名di用户   2022-4-26 16:00   1828   0

Cocoa 中很多图形对象都支持绑定. 我们把一个图形对象的属性(比如颜色, 或是值)和 一个key,比如fido,绑定起来.那么,图形对象就可以自动和那个key的值同步.

1. 定义数据 并且定义阿城城市可以写

-(int)fido{}

-(void)setFido:(int)value{}

或者写

@property (readwrite, assign) int fido;

@synthesize fido;

2. 通过interface build建立 控件与数据 之间的绑定

结论:

绑定后的控件如果发生奉新 那么setFido被调用,

只有调用 setFido 其他和fido绑定的控件才会得到更新

如果直接附值 比如 fido = 10; 绑定的控件是不会更新的 必须调用

[self willChangeValueForKey:@"fido"];

fido++;

[self didChangeValueForKey:@"fido"];

本质:

call stack:

[AppController setFido:]

[NSObject(NSKeyValueCoding) setValue:forKey:]

[NSObject(NSKeyValueCoding) setValue:forKeyPath:]

实际上 控件与数据绑定就相当与控件注册了一个通知 当控件创建时 他告诉Controller 我会一直关注fido的变化 只要是 通过setFido 设置了fido 控件就会相应刷新

实质上就是添加了一个observer

[theAppController addObserver:self

forKeyPath:@"fido"

options:NSKeyValueObservingOld

context:somePointer];

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP