пытается добавить текстовое поле в nsmenuitem, но он не будет отображаться - PullRequest
0 голосов
/ 26 апреля 2019

вот код, который я использую, чтобы попытаться добавить текстовое поле в 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()

1 Ответ

1 голос
/ 26 апреля 2019

Вы создали подкласс 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 не является правильным местом для настройки основных свойств поля. В таком подклассе вы должны использовать инициализатор , init(frame:... или init(coder: ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...