2015-09-15 112 views
2

我在使用自定義NSMenuItem()時遇到問題。到目前爲止,我已經創建了一個類:Swift中的自定義NSmenuitem

class AllCurrencyList: NSView { 

    @IBOutlet var allccyimage: NSImageView! 

    @IBOutlet var allccytext: NSTextField! 

} 

我已創建了上面,但我掙扎在我的菜單使用它提到的兩個IBOutlet一個廈門國際銀行。這裏是我想要做的事:

let menu = NSMenu() 
let item = NSMenuItem() 
item.view = AllCurrencyList //I get the error [Cannot assign a value of type 'AllCurrencyList.Type' to a value of type 'NSView?'] 

item.allccytext = "foo" 
item.allccyimage = NSImage(named: "foo") 

大多數我已經找到了教程在目標C,而我努力尋找在斯威夫特的例子。

謝謝你的幫助。

編輯

Grimxn的答案是正確的,但由於某些原因,我一直得到fatal error: unexpectedly found nil while unwrapping an Optional value on (item.view as! AllCurrencyList).allccytext.stringValue = "foo"

要修復它,我必須在我的主要故事板中創建我的自定義視圖,並創建一個IBoutlet引用我在創建NSMenu的類中的視圖。我仍然不明白爲什麼我不能使用我在不同的故事板文件中創建的視圖。對於任何運行到同一個問題,this was of great help.

回答

0

首先,您要指定一個類,而不是類的實例,以item.view - 使用

item.view = AllCurrencyList() // '()' instantiates 

其次,item不具備這些屬性allccytextallccyimage - item是NSMenuItem。您需要爲您的值分配item.view.allccytext.stringValueitem.view.allccyimage.image

item.view仍然是嚴格意義上的NSView,所以你還需要投item.view你的子類,你需要確保這兩個@IBOutlet s的連接正確(這是我不能在遊樂場,所以它和編譯然後崩潰'因爲他們不是)...

let menu = NSMenu() 
let item = NSMenuItem() 
item.view = AllCurrencyList() //'()' instantiates 

(item.view as! AllCurrencyList).allccytext.stringValue = "foo" 
(item.view as! AllCurrencyList).allccyimage.image = NSImage(named: "foo") 
+0

謝謝你,雖然我得到一個錯誤:'價值的類型'NSView?'?當我嘗試使用'item.view.allccytext.stringValue'時,沒有成員'allccytext''給了什麼? – anto0522

+0

查看更新以回答... – Grimxn

+0

謝謝你,現在我得到一個錯誤'致命的錯誤:意外地發現零,同時解開一個可選值'(item.view as!AllCurrencyList).allccytext.stringValue =「foo」 '我檢查了我的IBoutlets已正確鏈接,他們是... – anto0522