我目前正在尝试将html内容呈现到NSTableView内的自定义NSTableCellViews中。这是为了单独呈现电子邮件线程中的电子邮件。在选择时,NSTableCellView要么展开以显示呈现的电子邮件,要么收缩以隐藏它
- tableView:viewForTableColumn:行:
- tableView:行的高度:
- tableViewSelectionDidChange:
和:
- note更改了索引的行的高度:
- reloadDataForRowIndexes:列索引:
每个NSTableCellView都有一个WebView作为其子级。渲染的内容显示得很好,直到我开始大量滚动,这时屏幕外的WebView就会丢失渲染的内容。如果我通过收缩和扩展NSTableCellView来强制重新渲染,则内容看起来很好。
是否有委托方法/方法来解决此问题?或者,我应该使用WebViews以外的东西来在NSTableCellView中呈现html吗?
如果将来有人在这里遇到麻烦,我使用的解决方案是将NSTableView.usesStaticContents设置为YES。这防止makeViewWithIdentifier回收单元格,从而允许WebView在不同的NSTableCellViews中持久存在。
这显然会占用更多的内存,但由于电子邮件线程中的最大单元格数量有一定的限制,因此增加的数量在可接受的范围内。