我一直在使用rowViewForRow自定义我的NSTableRowView,但这在滚动时会导致严重的性能问题,因为不断刷新行。
我尝试将代码更新为仅在不存在该行的情况下才重绘,这可以使滚动更快/更流畅,但是有时某些视图现在显示错误的内容。
func tableView(_ tableView: NSTableView, rowViewForRow row: Int) -> NSTableRowView? {
let identifier = NSUserInterfaceItemIdentifier("MyTableRowView")
var rowView = tableView.makeView(withIdentifier: identifier, owner: self) as? MyTableRowView
// does the row exist?
if rowView == nil {
// create the row view
rowView = MyTableRowView(frame: NSRect.zero)
// set the identifier
rowView?.identifier = identifier
}
return rowView
}
任何建议,不胜感激!
最佳答案
想通了。该功能运行正常,但是我的一个自定义按钮视图需要setNeedsDisplay
上的isChecked
来更新显示。以前一直如此,因为该行一直被重新绘制。
关于swift - NSTableView自定义行 View 缓存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49161982/