如何在nstableview reloaddata之后保留可见内容?

时间:2011-09-09 09:56:29

标签: cocoa nstableview

我有一个子类化的nstableview,其数据源数组可能会增加,通过调用reloadData:我可以刷新以反映数据更新。

但是在reloadData:之后,tableview将始终滚动到具有相同旧行号的新单元格(例如,如果tableview显示第二个单元格,则在reloadData:之后,tableview将滚动到新的第二个单元格,因此,tableview的可见内容将发生变化)。如何在更新后禁用此自动行为并保持可见内容不变?

提前感谢!

2 个答案:

答案 0 :(得分:1)

表格视图在内容更改时不会重新滚动。由于您要更改当前显示的行的基础表格内容,因此您需要自己移动滚动条。

我没有这方面的代码,但我建议使用rowAtPoint:来查找表视图的初始位置,识别或计算该行内容的新行索引,然后调用:

[tableView reloadData];
[tableView scrollRowToVisible:newIndex];

答案 1 :(得分:0)

我修复了这个问题:首先,我得到了矩形改变量;然后在reloadData:之后,使用clipview的scrollToPoint:方法立即将tableview滚动到更改的点(原始点+ delta部分)。它做得如此之快,以至于你无法实现那里的操作。