【发布时间】:2012-06-12 20:12:25
【问题描述】:
我有一个NSView 子类,我想公开一个属性(准确地说是NSGradient),以便我可以将它与其他对象绑定(以编程方式使用bind:toObject:withKeyPath:options: 方法)。
我应该采取什么步骤?
这是我所做的:
+(void)initalize {
[self exposeBinding:@"gradient"];
}
- (Class)valueClassForBinding:(NSString*)binding {
if ([binding isEqualToString:@"gradient"]) { return([NSGradient class]); }
return(nil);
}
-(NSArray*)exposedBindings {
return([NSArray arrayWithObjects:@"gradient",nil]);
}
我不介意绑定没有显示在 Interface Builder 中。
gradient 是使用 @property (nonatomic, retain) NSGradient* gradient 实现的属性,它在当前实现中运行良好。
只是上面的代码需要实现它吗? (好像太容易了) 我相信我错过了一些东西。
注意:我不是 Bindings 专家,但我在大部分 Objective-C 方面都做得很好。
【问题讨论】:
-
刚刚发现 Tom Dalling 的帖子涵盖了这一点:tomdalling.com/blog/cocoa/implementing-your-own-cocoa-bindings -- 真的需要吗?那还需要吗?该帖子已有 2 年历史...
标签: objective-c xcode macos xcode4 cocoa-bindings