Swift中的自定义NSmenuitem

时间:2015-09-15 16:54:12

标签: macos swift nsmenu

我在使用自定义componentDidMount时遇到问题。到目前为止,我已经创建了一个类:

console.log

我已经使用上面提到的两个ajax创建了一个xib,但我很难在菜单中使用它。这是我想要做的:

NSMenuItem()

我发现的大多数教程都是在Objective C中,我很难在Swift中找到示例。

感谢您的帮助。

修改

Grimxn的回答是正确的,但由于某些原因,我不断得到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") 引用我的视图。我仍然不明白为什么我无法使用我在不同的故事板文件中创建的视图。对于遇到同一问题的任何人,this was of great help.

1 个答案:

答案 0 :(得分:0)

首先,您试图将一个类而不是该类的实例分配给item.view - 使用

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

其次,item没有这些属性allccytextallccyimage - item是NSMenuItem。您需要将值分配给item.view.allccytext.stringValueitem.view.allccyimage.image

item.view仍然严格地是NSView,因此您还需要将item.view投射到您的子类,并且您需要确保两个@IBOutlet是正确连接(我不能在Playground中,所以它编译然后崩溃'因为他们不是)...

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")