Изменить цвет курсора NSTextField в ячейке TableView - PullRequest
0 голосов
/ 01 июня 2018

У меня есть NSTextField, который находится внутри NSTableCelView подкласса.Я хочу изменить цвет курсора, потому что сейчас курсор совпадает с фоном.

В другом месте моего приложения я изменил цвет курсора с удобным расширением, например:

extension NSTextField {
  public func cursorColor(_ cursorColor: NSColor) {
    let fieldEditor = self.window?.fieldEditor(true, for: self) as! NSTextView
    fieldEditor.insertionPointColor = cursorColor
  }
}

Я поместил этот метод внутри viewWillDraw() в моем NSTableCellView подклассе:

override func viewWillDraw() {
  name.cursorColor(NSColor.white)
}

... но приложение вылетает на этой строке внутри extension:

let fieldEditor = self.window?.fieldEditor(true, for: self) as! NSTextView //Crash!

Я предполагаю, что это потому, что он не может найти ссылку на self.window, но я не уверен.

Есть идеи, что я делаю неправильно?

1 Ответ

0 голосов
/ 01 июня 2018

NSWindow.fieldEditor(_: for:) возвращает NSText?, но вы пытаетесь явно принудительно привести его к NSTextView.

Так что я думаю, что либо:

  1. Возвращенный объект - nil, и ваше приведение не выполнено или
  2. Возвращенный объект - это другой подкласс NSText (и поэтому не является NSTextView), а ваше приведение не выполнено

Какое реальное сообщение об ошибке вы получаете при падении?

...