2011-11-24 74 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屬性。

相關問題