我已经创建了一个子类的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
}

不幸的是, 图像 结合并不显示在口生成器。

我真的必须创建一个IBPlugin露绑定在接口的建设者? 这似乎只是矫枉过正的方式为一个定义看,我不打算重新使用。

有帮助吗?

解决方案

对标题的回答:不,您可以在没有IB插件的情况下绑定自定义视图(通过在代码中执行)。
回答问题正文中的问题:是的,您确实需要一个IB插件来公开IB中的绑定。

您的代码不会在Interface Builder中运行,除非您将其放入Interface Builder,并且 exposeBinding:消息是您的代码。因此,您需要将其放入Interface Builder中。这意味着要编写IB插件。

此外,IB插件与旧IB调色板不同。插件需要IB 3,并且更容易创建。调色板需要IB 2并且很难创建。

其他提示

我只是使用不同的标准绑定(例如,toolTip)将我的控制器对象绑定到我的视图对象,然后使用文本编辑器编辑XIB文件并手动更改XML。

此后,绑定工作正常,甚至可以在Interface Builder中正确显示以启动!

不,你可以使用方法

<代码>绑定:toObject:withKeyPath:选择:

以编程方式建立绑定。我相信你必须创建一个IB调色板来使绑定出现在Interface Builder中,但是对于一个我不打算重用的一次性类,我从来没有打扰过。

如果你能管理做绑手你将会节省大量的时间。创造定义IB调是一个很大的工作相比,几线的手册结合的代码。但是,如果你需要和要求定制IB调色板然后我会开始通过审查什么样的NSView类需要、编码明智的。一个伟大的地方开始寻找克劳福德的网站上绑定:

http://homepage.mac.com/mmalc/CocoaExamples/controllers.html

我已经用了很多过去的几年中,它已帮助了很多与我定义IB调色板的目的和具有约束力的问题。有一个例子在他的网站具体地说,详细定义NSView的定义绑定。

别的东西注意到,那是你定制图也将会有工作,在该接口建设者的环境。有一些小的修正,需要投入地在你的绑定中的代码定义NSView对象,以便它能和结合适当接口的建设者。这些细节还注意到克劳福德的网址:

http://homepage.mac.com/mmalc/CocoaExamples/controllers.html#ibBindings

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top