NSTableView自定义行视图缓存

时间:2018-03-07 22:07:23

标签: swift scroll nstableview

我一直在使用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

}

任何建议都非常感谢!

1 个答案:

答案 0 :(得分:0)

想出来了。该功能运行正常,但我的一个自定义按钮视图需要setNeedsDisplay isChecked来更新显示。这之前总是有效,因为行一直在重绘。