我有一个包含100个单元格的表视图。起初,它是空的。然后,我打电话给:
[_tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationLeft];
由于表视图中没有任何内容,我需要创建几个单元格。但是,我期待表视图要求10(以适应屏幕大小)单元格...而不是100!
当我只是在没有任何动画的情况下重新加载表视图时,就不会发生这种情况:
[_tableView reloadData];
这个问题使得表重新加载非常慢:有没有办法让它只要求10个单元?
也许我不够清楚:起初,表格中有没有条目。 然后,我在我的数据源中添加 100个条目,并要求表重新加载:重新加载之前没有可见的单元格,因此reloadRowsAtIndexPaths
解决方案获胜不行。
答案 0 :(得分:2)
听起来你在表中插入新行,而不是重新加载,所以为什么不使用:
[_tableView insertRowsAtIndexPaths:... withRowAnimation:...];
您可能需要先插入该部分:
[_tableView insertSections:... withRowAnimation:..];
答案 1 :(得分:0)
如果您只想重新加载,请说10个单元格,以下代码将起作用。
int cellsToReload = 10;
NSMutableArray *indexPaths = [NSMutableArray arrayWithCapacity:cellsToReload];
for(int x = 0; x < cellsToReload; x++) {
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:x inSection:0];
[indexPaths addObject:indexPath];
}
[self.theTableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationLeft];
在上面的代码中,当您重新加载所有tableview时,您正在重新加载整个部分而不仅仅是几行。我猜你的tableview只有一个部分。
答案 2 :(得分:0)
NSArray *paths = [_tableView indexPathsForVisibleRows];
[_tableView reloadRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationLeft];
将完全按照您的需要进行操作 - 仅重新加载可见的原始数据,既不多也不少。
答案 3 :(得分:0)
我发现此问题仅在iOS 5.1及更低版本上发生。无需提交错误,因为它已在iOS 6中得到纠正。无论如何,谢谢你的答案!