在 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
.
所以我的猜测是:
- 返回的对象是
nil
并且您的转换失败或
- 返回的对象是
NSText
的不同子类(因此不是 NSTextView
)并且您的转换失败了
您在崩溃时收到的实际错误消息是什么?
我在 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
.
所以我的猜测是:
- 返回的对象是
nil
并且您的转换失败或 - 返回的对象是
NSText
的不同子类(因此不是NSTextView
)并且您的转换失败了
您在崩溃时收到的实际错误消息是什么?