这是我用来尝试将文本字段添加到nsmenuitem中的代码
class menuitemtest1: NSTextField {
var menuitemtest1 = NSTextField()
override func viewDidChangeBackingProperties() {
menuitemtest1.frame = CGRect(x: 220, y: 8, width: 103, height: 17)
menuitemtest1.stringValue = "Maximum Lenght"
menuitemtest1.isEditable = false
menuitemtest1.textColor = .gray
menuitemtest1.isSelectable = false
menuitemtest1.drawsBackground = false
}
}
多数民众赞成在类 以及我如何添加它
var textFieldInMenutest = NSMenuItem()
menuBarMenu.addItem(textFieldInMenutest)
textFieldInMenutest.view = menuitemtest1()
答案 0 :(得分:1)
您创建了一个NSTextField子类,该子类具有一个单独的直接NSTextField实例作为属性。这是没有道理的。您打算要做的是这样:
class menuitemtest1: NSTextField {
override func viewDidChangeBackingProperties() {
self.frame = CGRect(x: 220, y: 8, width: 103, height: 17)
self.stringValue = "Maximum Lenght"
self.isEditable = false
self.textColor = .gray
self.isSelectable = false
self.drawsBackground = false
}
}
关于它为什么“不显示”的原因-您在菜单项视图中添加的文本字段的尺寸为零(默认),因此它根本是不可见的。
此外,viewDidChangeBackingProperties
不是设置字段基本属性的正确位置。在这样的子类中,应使用 initializer ,init(frame:...
或init(coder: ...