【问题标题】:how to keep the visible content after nstableview reloaddata?nstableview reloaddata后如何保持可见内容?
【发布时间】:2011-09-18 12:42:56
【问题描述】:

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

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

提前致谢!

【问题讨论】:

    标签: cocoa nstableview


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,noa,你的回答真的给了我灵感!
    【解决方案2】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-28
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多