2011-11-24 77 views
0

我想弄清楚在使用核心数据和可可绑定时,NSPopUpButton是如何填充数据的。原因是我subclassed NSPopUpButton,我想通过向他们添加一个图像来操纵菜单项的插入。使用核心数据和绑定时,NSPopUpButton是如何填充数据的?

我子类 - (void)addItemWithTitle:(NSString *)title- (void)addItemsWithTitles:(NSArray *)itemTitles- (void)insertItemWithTitle:(NSString *)title atIndex:(NSInteger)index 只是看哪个方法被调用,但他们都不是在应用程序启动。

有没有人知道什么是正确的方法。这里的类参考文档不是很有帮助(或者我没有知道如何使用它),因为没有其他方法列出影响项目插入的方法。

由于提前, 托马斯

回答

1

你这是怎么用的数据来自CoreData填写您的NSPopUpButton:

比方说,你有CoreData实体“人”与NSString的“名称”属性

首先在InterfaceBuilder中创建一个NSArrayController并将其模式设置为“Entity Name”,输入名称“Person”并选中“Prepares Content”。

现在将一个新的NSPopUpBotton放入您的接口并将其“内容值”绑定到ArrayController。控制器键应该是“排列物体”和模型键路径“名称”。

(现在你只需要添加一些数据)

一个NSPopUpButton包含NSMenuItems。 NSMenuItems可以有图像。所以你不需要继承它。

您也可以使用NSMenuItems创建一个数组,其中包含图像并将数组绑定到NSPopUpButton的“内容”。

+0

你好,丹尼尔!谢谢,但这不是我要找的。我了解绑定和核心数据,以便我能够绑定控件。我想知道**当核心数据/绑定填充数据时调用'NSPopUpButton'的哪个方法,以便我可以根据需要更改实现。 –

+0

你好Daniel再次。到您帖子的第二部分。我有一个核心数据实体,其中包含一个名称和一个位图。有用的是,名称绑定到'NSPopUpButton',我想要实现的是显示位图和名称。我没有找到一种单独使用Interface Builder来获取它的方法。该计划是,将实体名称绑定在实体上,并为'NSPopUpButton'子类化,以便在控件提供数据时以编程方式添加图像。我希望现在更清楚。 –

0

这是一个相当古老的问题,但我现在手动执行NSPopUpButtonNSTreeController的绑定后就已经有了答案。

您可以在Github上检查我的NSTreePopUpButton项目,看看我是如何做到的,我非常肯定这就是NSPopUpButton也是如此。

至于我可以告诉NSPopUpButton覆盖

func bind(binding: String, toObject observable: AnyObject, withKeyPath keyPath: String, options: [NSObject : AnyObject]?) 

如果bindingNSContentBinding,类增加了本身作为观察员参加对象,像关键路径。

observable.addObserver(self, forKeyPath: keyPath, options:..., context:...) 

当在关键路径中的值改变方法

func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) 

被称为上NSPopUpButton。此方法的实现将更新或创建一个完整的新实例NSMenu并将其分配给menu属性。

相关问题