【发布时间】:2014-06-20 16:51:21
【问题描述】:
在 Mail 中,如果您通过 pull to refresh 手动刷新邮箱,如果您没有任何新电子邮件,则视图会向后滑动以隐藏微调器,但现有单元格的外观不会改变 - 它们不会t 动画。但是,如果您确实有新的电子邮件,它们会从顶部开始显示。如果您在刷新之前没有列出任何电子邮件,那么所有单元格的动画效果都非常好。此外,如果您刷新并且现有电子邮件已被删除,它的消失是动画的,但除了整个表格向上移动以取代已删除的单元格之外,其他单元格都没有动画。我想在我的应用中实现同样的行为。
目前,当我的数据第一次被提取时,它立即出现在表格中,没有任何动画。如果某些数据被删除并且用户手动刷新,整个表格会立即更新,因此不会出现单元格消失的动画,它会立即被其下方的行替换。如果单元格已经显示并且刷新导致新数据被添加到表格中,则会发生相同的行为 - 它只是立即出现。
reloadData时如何实现单元格出现和消失的动画?但如果它们不改变,则不会为现有单元格设置动画。
我的设置是获取数据,将 JSON 解析为数据结构(数组或字典),然后调用reloadData,然后cellForRowAtIndexPath 从结构中获取数据。当用户刷新时,它会再次执行相同的步骤。
到目前为止,我的尝试都没有成功。我试过而不是简单地调用reloadData,而是调用[self.tableView reloadSections:[NSIndexSet indexsetWithIndex:0] withRowAnimation:UITableViewRowAnimationTop];,但这只会对第一部分进行动画处理,并且它始终会对其进行动画处理,即使没有任何数据发生变化。我的其他尝试也总是对其进行动画处理:
[self.tableView beginUpdates];
[self.tableView deleteSections:[NSIndexSet indexsetWithIndex:0] withRowAnimation:YES];
[self.tableView insertSections:[NSIndexSet indexsetWithIndex:0] withRowAnimation:YES];
[self.tableView endUpdates];
【问题讨论】:
标签: ios objective-c uitableview animation