我在使用自定义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.
答案 0 :(得分:0)
首先,您试图将一个类而不是该类的实例分配给item.view
- 使用
item.view = AllCurrencyList() // '()' instantiates
其次,item
没有这些属性allccytext
和allccyimage
- item
是NSMenuItem。您需要将值分配给item.view.allccytext.stringValue
和item.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")