我一直在使用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
}
任何建议都非常感谢!
答案 0 :(得分:0)
想出来了。该功能运行正常,但我的一个自定义按钮视图需要setNeedsDisplay
isChecked
来更新显示。这之前总是有效,因为行一直在重绘。