(基于视图)NSTableView的reloadDataForRowIndexes:columnIndexes:不删除行视图?

时间:2011-09-30 21:23:28

标签: macos cocoa nstableview

尝试在10.7中使用reloadDataForRowIndexes:columnIndexes:作为基于NSTableView的视图。但是有重绘问题。如果我编辑对象并调用reloadDataForRowIndexes:columnIndexes:并稍后删除该对象,我最终得到一个静态行视图。

docs warn

  

对于基于视图的表视图,reloadDataForRowIndexes:columnIndexes:   将删除表格行中的视图单元格,但不删除NSTableRowView   实例

我不知道如何告诉表视图也放弃行视图。如果我使用reloadData一切正常,但显然它是一个更重的方法来调用并导致选择丢失。

有什么想法吗?

更新:添加了一个演示应用来演示该错误。可以在GitHub上找到。它有解决方法代码但是我仍然希望找到答案。

https://github.com/zorn/NSTableView-ViewBased-ReloadRowBug

1 个答案:

答案 0 :(得分:2)

我想我修复了这个bug。事实证明,在桌面视图上尝试任何类型的[self.tableView endUpdates]之前,必须要小心关闭reloadDataForRowIndexes:columnIndexes:

我会附加我的雷达,要求在尝试做这样的事情时记录正式的控制台工作。

GitHub项目已更新。