我创建了NSView的子类来将图像绘制为模式:
@interface CePatternView : NSView { NSImage* image; id observableObjectForImage; NSString* keyPathForImage; } @end
我实现了以下内容来公开绑定:
+ (void)initialize { // Expose the "image" binding to IB. [self exposeBinding:@"image"]; } - (Class)valueClassForBinding:(NSString *)binding { if([binding isEqualToString:@"image"]) return [NSImage class]; return nil; // Unknown binding }
不幸的是,图像绑定不会出现在Interface Builder中.
我是否真的必须创建一个IBPlugin来在Interface Builder中公开绑定?对于我不打算重用的自定义视图来说,这似乎有些过分.
标题回答:不,你可以在没有IB插件的情况下绑定自定义视图(在代码中执行).
回答问题正文中的问题:是的,您确实需要一个IB插件来暴露IB中的绑定.
您的代码不会在Interface Builder中运行,除非您将其放入Interface Builder中,并且该exposeBinding:
消息是您的代码.因此,您需要将其放入Interface Builder中.这意味着要编写IB插件.
此外,IB插件与旧的IB调色板不同.插件需要IB 3,并且更容易创建.调色板需要IB 2并且创建起来很痛苦.
我只是使用不同的标准绑定(例如,toolTip)将我的控制器对象绑定到我的视图对象,然后使用文本编辑器编辑XIB文件并手动更改XML.
此后,绑定正常工作,甚至可以在Interface Builder中正确显示以启动!