【发布时间】:2013-08-05 14:48:28
【问题描述】:
在我的 UITableView 实例中,我将单元格移动到 index:0 并重新加载数据。问题是单元格“捕捉”到顶部(我认为是由于 reloadData)。我想知道我是否可以将单元格向上移动,然后在几秒钟后应用 reloadData。这是我的代码:
[_toDoItems removeObject:todoItem];
[_toDoItems insertObject:todoItem atIndex:0 ];
[self.tableView beginUpdates];
[self.tableView moveRowAtIndexPath:origIndexPath toIndexPath:0];
[self.tableView endUpdates];
sleep(1);
[self.tableView reloadData];
这样做的问题是,调用该方法后,一切都会暂停 1 秒,然后出现“snap”动画。
【问题讨论】:
-
sleep(1);有什么用?删除它。 -
sleep()永远不应该被使用。它阻塞了所有线程,包括处理所有视觉效果的主线程。这就是为什么您会看到它等待一秒钟,然后突然响起。咬合只是在等待它的踏板被解锁。此外,由于reloadData没有任何动画,它会产生“捕捉”效果。 -
我的逻辑是,单元格会移到顶部;那么它的睡眠会延迟 reloadData 1 秒。
标签: ios objective-c reloaddata