gpt4 book ai didi

cocoa - TableView 中的自定义 NSTextField : how do I know if the row is selected to change the background color?

转载 作者:行者123 更新时间:2023-12-03 17:25:00 24 4
gpt4 key购买 nike

我有基于 View 的 NSTableView 和自定义 NSTextField 子类实例来绘制行标签。

根据是否选择(突出显示)行,我想更改自定义文本字段的背景颜色。

我如何知道我的文本字段的 drawRect:(NSRect)dirtyRect 是否选择了父表行?

文本字段甚至不知道它是 TableView 的一部分(也不应该知道)。

如果我将一个普通的 NSTextField 放入 TableView 中,它会根据行选择状态自动更改其字体颜色,因此文本字段必须以某种方式知道它是否被选择/突出显示或者现在。

最佳答案

表格 View 是单元格 View 中 View 的父 View 。因此,您可以在drawRect方法中迭代 View 层次结构以找到父 TableView 。并用它检查是否选择了包含自定义 NSTextField 的行。

override public func drawRect(dirtyRect: NSRect) {
var backgroundColor = NSColor.controlColor() //Replace by the non selected color
var parentView = superview
while parentView != nil {
if let tableView = parentView as? NSTableView {
let row = tableView.rowForView(self)
if tableView.isRowSelected(row) {
backgroundColor = NSColor.alternateSelectedControlColor() //Replace by the selected background color
}
break
}
parentView = parentView?.superview
}
//Perform the drawing with the backgroundColor
// ...
}

关于cocoa - TableView 中的自定义 NSTextField : how do I know if the row is selected to change the background color?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8908086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com