带有嵌入式WebView的NSTableView

时间:2015-11-26 18:23:32

标签: objective-c xcode macos nstableview xcode-storyboard

我目前正在尝试将html内容渲染到NSTableView中的自定义NSTableCellViews中。这是为了单独在电子邮件线程中呈现电子邮件。在选择时,NSTableCellView会展开以显示已呈现的电子邮件,或者合同以隐藏它。它似乎与以下组合工作正常:

  • 的tableView:viewForTableColumn:行:
  • 的tableView:heightOfRow:
  • tableViewSelectionDidChange:

  • noteHeightOfRowsWithIndexesChanged:
  • reloadDataForRowIndexes:columnIndexes:

每个NSTableCellView都有一个WebView作为其子级。渲染的内容显示正常,直到我开始大量滚动,在屏幕外WebViews丢失其渲染的内容。如果我通过签约和扩展NSTableCellView来强制重新渲染,那么内容就会很好。

是否有委托方法/解决方法?或者我应该使用除WebView之外的其他内容在NSTableCellView中呈现html吗?

1 个答案:

答案 0 :(得分:0)

如果有人偶然发现未来,我使用的解决方案是将NSTableView.usesStaticContents设置为YES。这可以防止makeViewWithIdentifier回收单元格,从而允许WebView在不同的NSTableCellViews中持久化。

这显然会占用更多内存,但由于电子邮件线程中最大单元格数有明确限制,因此增加的范围在可接受的范围内。