2010-05-27 100 views
0

假設button1是NSPopUpButton 假設附加到button1的菜單顯示並被跟蹤。dismissPopUp is not recognized

[[button1 cell] dismissPopUp] --- dismissPopUp無法識別。

爲什麼dismissPopUp方法無法識別?

感謝

回答

0

因爲NSCells不給dismissPopUp消息作出響應。

如果您在運行時將此作爲例外情況,請確保button1確實是一個彈出式按鈕 - 也就是說,確保您將該插座連接到IB中的正確對象,或者您分配了如果您在代碼中創建了正確的對象。在後一種情況下,使用調試器來檢查變量。

如果這只是您從編譯器獲得的警告,可能是因爲cell是NSControl(NSPopUpButton的grand-superclass)的一種方法,並且鍵入爲返回NSCell。編譯器無法知道這個特定的控件將返回一個NSPopUpButtonCell。解決的辦法是分配cell消息類型爲NSPopUpButtonCell *一個變量的結果,然後發送dismissPopUp消息中的對象變量:

NSPopUpButtonCell *cell1 = [button1 cell]; 
[cell1 dismissPopUp]; 

如果仍然收到警告,你需要在[button1 cell]表達式前添加一個明確的強制轉換。