【问题标题】:UITableView update via JSON, animate Row insertionUITableView 通过 JSON 更新,动画行插入
【发布时间】:2010-02-08 20:11:53
【问题描述】:

我有一个通过 JSON 加载的 UITableView。所以我的逻辑是这样的:

  1. 获取 JSON(NSOperation,回调主线程)
  2. 在回调中,解析 json,并将新数据插入到我的表的数据源数组中。
  3. 在 TableView 上调用 reloadData 以显示新数据。

我的问题是:如何动画化表中新行的到来?现在我只是让它们同时出现,我想做的是让它们动画到位,因为这样看起来更酷。

我想我想要的是使用:

 [self.theTableView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationRight];

但这让我在运行时抱怨更新的大小与数据源中的大小不同。

我是否遗漏了有关如何使用该方法的内容?有谁知道有人通过这种模式将新行动画化到 TableView 中的示例?

更新:基本上,感谢 Ben 的指导,我通过以下方法解决了这个问题:

  1. 从 [self.theTableView beginUpdates] 开始;
  2. 当我循环遍历 JSON 中的条目时,将它们插入到数组的开头,每次循环都会增加它们的索引。
  3. 每次循环调用 insertRowsAtIndexPath,如下所示:

    NSIndexPath *indexPath; indexPath = [NSIndexPath indexPathForRow:[self.theChatEntries indexOfObject:message] inSection:0]; [self.theTableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:NO];

  4. 以循环外的 endUpdates 结束。

呜呜呜。

【问题讨论】:

    标签: iphone animation tableview


    【解决方案1】:

    你在正确的轨道上;您需要使用 [self.theTableView beginUpdates] 和 [self.theTableView endUpdates] 包装对 -insertRowsAtIndexPaths:withRowAnimation: 的调用。

    【讨论】:

    • 我试过了,但是当我从 JSON 获取第一行时,它崩溃了:'无效更新:第 0 节中的行数无效。之后现有节中包含的行数更新 (1) 必须等于更新之前该节中包含的行数 (0),加上或减去从该节插入或删除的行数(0 插入,0 删除)。'
    • 接受引导我走上正轨。为后代更新问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    相关资源
    最近更新 更多