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

10-13 05:04