gpt4 book ai didi

iphone - insertRowsAtIndexPaths 为每一行调用 cellForRowAtIndexPath

转载 作者:可可西里 更新时间:2023-11-01 17:02:32 26 4
gpt4 key购买 nike

我正在尝试使用 insertRowsAtIndexPaths 一步将一堆行插入到一个空的 UITableView 中。 (我知道这听起来没什么用,但它是我真正需要做的事情的简化版本。)

我看到的问题是,在调用 insertRowsAtIndexPaths 之后,我会为插入的每一行调用 cellForRowAtIndexPath,而不仅仅是那些可见的行。

这似乎不对。如果这样做,对我来说几乎毫无用处。

我看到的唯一有点奇怪的其他工件是,当我这样做时,它实际上似乎使行动画到位。这不是 withRowAnimation,因为它被设置为无。但似乎这里有某种更高层次的动画概念。我的想法是,当它为行设置动画时,它认为它需要更多/所有行的单元格,直到它们被推离屏幕。但是,如果不使用我希望避免的 reloadData,我就无法关闭此动画。

通常我有一个在幕后发生变化的数据集。我可以仔细检查并构建更改以生成用于插入/删除/重新加载调用的数据。但我不能将其限制为屏幕上显示的内容,因为它与数据提供者不匹配。

我想我一定遗漏了一些东西……有什么想法吗?

(我在 beginUpdates/endUpdates 对中执行此操作,但这似乎没有什么区别。)

最佳答案

我今天与一些 Apple 员工进行了交谈。这个问题肯定与插入新行时 UITableView 的动画有关。这是恰好为单元格创建新行的动画,与通过 insertRowsAtIndexPaths 引入这些行时使用的动画分开。

由于表格级动画通过一种“向下增长”的方式创建新行,在插入动画期间,少量许多单元格被认为是可见的,表格将为它们调用 cellForRowAtIndexPath。

似乎没有适用于所有情况的替代实现。对于我的案例,推荐的解决方案是“撒谎”:找出动画后页面上将存在哪些单元格并插入这些单元格。动画完成后,插入剩余的不会显示的单元格,表格也不会调用 cellForRowAtIndexPath。

这需要在 TableView 和“真实”数据源之间实现一个对象,该对象可以在动画持续期间向 TableView “谎报”表中的行数。很痛苦,但这显然是在类似情况下所做的。

关于iphone - insertRowsAtIndexPaths 为每一行调用 cellForRowAtIndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6077885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com