gpt4 book ai didi

cocoa - 如何在 NSOutlineView 中子类化 NSTableRow

转载 作者:行者123 更新时间:2023-12-03 17:38:06 26 4
gpt4 key购买 nike

要更改NSOutlineView侧边栏突出显示颜色,NSTableRow需要使用覆盖函数drawSelectionInRect进行子类化。当代码中当前没有公开引用 NSTableRow 时,这怎么可能?

func outlineView(outlineView: NSOutlineView, viewForTableColumn: NSTableColumn?, item: AnyObject) -> NSView? {

}
<小时/>

也许可以使用带有emphazished属性的更简单的解决方案

func outlineViewSelectionDidChange(notification: NSNotification){
let selectedIndex = notification.object?.selectedRow
let object:AnyObject? = notification.object?.itemAtRow(selectedIndex!)
notification.object?.rowViewAtRow(selectedIndex!, makeIfNecessary: false)?.emphasized = false
outlineView.deselectRow(selectedIndex!)

最佳答案

就像你使用的一样

func outlineView(outlineView: NSOutlineView, viewForTableColumn: NSTableColumn?, item: AnyObject) -> NSView? {...}

你可以使用

func outlineView(_ outlineView: NSOutlineView, rowViewForItem item: AnyObject) -> NSTableRowView? {...} 

对于行 View 。

具体操作方法如下:

  1. 子类 NSTableRowView 并实现 drawSelectionInRect: 以自定义子类的外观。

  2. 通过在rowViewForItem:中返回子类,确保您的outlineView了解您的子类你可以在这个方法中看到如何返回 View here .

由于您只覆盖了drawSelectionInRect:所有其他功能仍然可用。所以你不需要做任何其他事情。

关于cocoa - 如何在 NSOutlineView 中子类化 NSTableRow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36249631/

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