2010-10-27 62 views
0

我知道這可能是一個簡單的問題,但在這裏NOOB問題是什麼,我傷透我的大腦摸不着頭腦:與代碼得到結果(更多specificly與NSComboBox)

我知道這一點:

- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index { 
return [midiModelContents objectAtIndex:index]; 

}

將在該指數提供回報的項目。我的問題是,我需要使用什麼代碼來調用這個例程?

我已經試過這樣的事情:

NSString *curData =(comboBox: midiModel objectValueForItemAtIndex:0); 

但我得到一個「錯誤:‘組合框’未申報」

誰能幫我與我搞亂概念?

回答

2

首先,您可能需要閱讀the Objective-C Programming Language以瞭解將消息發送給對象(包括您自己)的正確語法。

你得到一個無意義的錯誤消息,因爲你已經寫了(什麼在Objective-C)廢話的代碼。一個有效的Objective-C消息表達式可以編譯並運行成功,但我認爲它不會達到你期望的效果。

您看到了(這是第二件事),comboBox:objectValueForItemAtIndex:通常不是您發送給自己的消息。 當您是其數據源時,組合框會將該消息發送給您。數據源是the Cocoa Fundamentals Guide中詳細介紹的代表模式的變體。

(您可以將消息發送給自己,甚至可能讓你刻意想通過同一個對象的值檢索路徑組合框確實感覺要做到這一點,但是這是不是你需要做一個組合框工作。)

語言文檔和可可基礎知識文檔都是每個Cocoa程序員必讀的內容,以及the Memory Management Guide for Cocoa。你應該從頭到尾閱讀所有三個文件。

解決您當前的問題的方法是將響應comboBox:objectValueForItemAtIndex:的對象作爲組合框的數據源。您可能會將其與IB綁定,在您創建組合框的同一個筆尖中。

如果沒有任何意義,那麼我可以建議您再次閱讀這些文檔。他們會解釋一切。

如果你真的只是想問自己對象的值是否與組合框一樣(即組合框已經工作並打算以相同的方式獲取對象值用於其他目的),那麼,那麼你仍然需要閱讀Objective-C編程語言文檔來學習正確的語法來發送你自己的消息。

+0

感謝您的正確方向。我已經開始了你建議的閱讀。我也從你解釋組合框如何發送信息的過程中找到了我正在尋找的代碼。 – 2010-10-28 17:39:37