2013-05-16 68 views
3

假設我有一個NSObject代表一個國家的子類,將可可NSComboBox值綁定到對象

@interface CountryInfo : NSObject 

@property (nonatomic, retain) NSString *countryName; 

我的模型包含CountryInfo秒的NSMutableArray。我想將數組綁定到NSComboBox。組合框應顯示國家名稱,並允許用戶選擇國家。

所以,我建立了我的.xib像這樣:

CountryArrayController(NSArrayController的)

ContentArray

  • 綁定到:文件的所有者>型號主要路徑:自我.model.countries

NSComboBox

內容

  • 綁定到:CountryArrayController>控制鍵:arrangedObjects

含量值

  • 綁定到:CountryArrayController>控制鍵:arrangedObjects>型號主要路徑:國家名稱

到目前爲止,一切都很好。現在,如何綁定NSComboBoxValue?該文件指出:

"An NSString or NSNumber that specifies the value of the NSComboBox." 

這是什麼意思? 我注意到,我可以將其綁定到我的模型上的NSString,並且它將反映所選的countryName。但我想綁定到CountyInfo對象本身!無論是直接還是通過綁定到我的陣列控制器上的選擇:我該如何設置?

+0

您是否嘗試過使用NSValueTransformer? – macandyp

+0

嗨@macandyp,是一個NSValueTransformer確實會工作,我可以通過綁定字符串值和手動轉換代碼來獲得相同的行爲。看起來奇怪的是,我必須編寫額外的代碼來實現這一點,並且不能僅僅綁定到對象(這是我習慣的)。謝謝! – TheNextman

+1

我同意這有點奇怪。我知道如果你綁定到內容,而不是綁定內容值,它會調用你的類的描述來填充組合框的字符串。不過,我不知道這對你是否有所幫助。 – macandyp

回答

10

我正在接近這個錯誤 - 正確的控制使用是NSPopUpButton而不是NSComboBox

NSComboBox有不同的行爲,因爲它需要支持用戶直接輸入文本的場景。 NSPopUpButton旨在僅使用預定義的一組值並按預期​​行爲,而不是「選擇」綁定。

相關問題