我有一个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
的引用,但我不确定。
任何想法我做错了什么?
答案 0 :(得分:1)
NSWindow.fieldEditor(_: for:)
会返回NSText?
,但您正试图明确强制将其强制转换为NSTextView
。
所以我的猜测是:
nil
,您的演员阵容失败或NSText
的不同子类(因此不是NSTextView
)并且您的演员表失败您崩溃时获得的实际错误消息是什么?