smp*_*kes 3 iphone uitableview ios
我正在尝试使用insertRowsAtIndexPaths在一个步骤中将一堆行插入到空的UITableView中.(我知道这听起来并不那么有用,但它是我真正需要做的简化版本.)
我看到的问题是,在我调用insertRowsAtIndexPaths之后,我为每个插入的行调用了cellForRowAtIndexPath,而不仅仅是那些可见的行.
这似乎不对.如果这样做,对我来说几乎没用.
我看到的唯一有点奇怪的其他工件是,当我这样做时,它实际上似乎将行动画到位.这不是withRowAnimation,因为它设置为none.但似乎这里有某种更高级别的动画概念.我有一个想法,因为它将行动画到位,它认为它需要更多/所有行的单元格,直到它们被推离屏幕.但是,如果不使用我希望避免使用的reloadData,我无法关闭此动画.
通常我有一个在幕后改变的数据集.我可以仔细检查并构造更改以生成插入/删除/重新加载调用的数据.但我无法将其限制在屏幕上的内容,因为它与数据提供者不匹配.
我想我必须遗漏一些东西......任何想法?
(我在beginUpdates/endUpdates对中执行此操作,但这似乎没有区别.)
我今天和一些苹果人谈过.该问题肯定与UITableView在插入新行时所执行的动画有关.这是为单元格创建新行的动画,与通过insertRowsAtIndexPaths引入这些行时使用的动画分开.
由于表级动画通过一种"长大"类型的东西创建新行,因此在插入动画期间,少量的单元格被认为是可见的,并且表格将为它们调用cellForRowAtIndexPath.
对于所有情况,似乎没有任何替代实现.对我的案例推荐的解决方案是"撒谎":弄清楚动画后页面上将存在哪些单元格并插入它们.在该动画完成后,插入将不显示的其余单元格,表格将不会调用cellForRowAtIndexPath.
这需要在表视图和"真实"数据源之间实现一个对象,该对象在动画持续时间内可以"躺在"表视图中关于表中的行数.痛苦,但这显然是在类似情况下所做的.
归档时间: |
|
查看次数: |
5228 次 |
最近记录: |