2009-05-04 15 views
0

我想使用NSFormatter子類來格式化我用來顯示選項列表的NSPopUpButton的內容。如何在NSPopUpButton中使用NSFormatter子類

基本上我有一個MyObjects的NSArray,它通過內容值綁定綁定到NSPopUpButton,我想在彈出菜單中顯示除-description返回的內容以外的內容。我真的不想使用轉換器,因爲那樣我必須創建一個全新的數組,並在將每個對象添加到新數組之前將其轉換爲字符串。

使用setFormatter:通過IB或代碼在NSPopUpButton本身無法正常工作,我懷疑是因爲只有單個單元格的格式化程序應用於列表中的項目。

有沒有簡單的方法來設置NSPopUpButton的所有單元的格式化程序?基本上我想只能設置一次而忘記它。

回答

1

通常情況下,您會將彈出式按鈕綁定到包含自定義模型對象的數組控制器(通過內容綁定),並使用內容值綁定指定這些對象上的keypath,並使用要用作標題。

從我的理解,你有一個純數字串的數組,你想用作數據源,只有你想顯示一個不同的字符串的標題,對不對?

我不確定爲什麼如果像上面那樣設置數據轉換器不會工作 - 或者我誤解了某些東西?你將有一個綁定到實際的字符串,另一個綁定到字符串使用變壓器,但他們都會使用相同的數組控制器。你的其他選項是創建一個模型類來包裝字符串並提供一個title屬性,或者在NSString上創建一個返回你的標題作爲顯示值綁定的類別。在所有這些情況下,您可以在代碼中創建自己的NSFormatter並使用它返回正確的字符串標題。

+0

謝謝,我實際上是直接將NSPopUpButton綁定到數組而不使用數組控制器,因此無法顯示數組中對象的特定屬性。你讓我意識到,我真正需要做的只是添加一個數組控制器,然後綁定到數組控制器的sortedObjects/self.myKeyPathToDisplay值 – 2009-05-04 23:57:12