在 TableView 单元格内更改 NSTextField 光标颜色

Change NSTextField Cursor Color When inside TableView Cell

我在 NSTableCelView 子类中有一个 NSTextField。我想更改其光标颜色,因为现在光标与背景相同。

在我的应用程序的其他地方,我用这样一个方便的扩展更改了光标颜色:

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 的引用,但我不确定。

知道我做错了什么吗?

NSWindow.fieldEditor(_: for:) returns 一个 NSText?,但你试图明确地将它强制转换为 NSTextView.

所以我的猜测是:

  1. 返回的对象是 nil 并且您的转换失败或
  2. 返回的对象是 NSText 的不同子类(因此不是 NSTextView)并且您的转换失败了

您在崩溃时收到的实际错误消息是什么?