4

我有一个包含 100 个单元格的表格视图。起初,它是空的。然后,我打电话:

[_tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationLeft];

由于表格视图中没有任何内容,我需要创建几个单元格。但是,我希望表格视图要求 10 个(以适应屏幕大小)单元格......而不是 100 个!

当我只是重新加载没有任何动画的表格视图时,它不会发生:

[_tableView reloadData];

这个问题使表格重新加载非常慢:有没有办法让它只要求 10 个单元格?


编辑

也许我不够清楚:起初,表格没有条目然后,我在我的数据源中添加了100 个条目,并要求重新加载表:重新加载之前没有可见的单元格,因此该reloadRowsAtIndexPaths解决方案将不起作用。

4

4 回答 4

2

听起来您是在表中插入新行,而不是重新加载,所以为什么不使用:

[_tableView insertRowsAtIndexPaths:... withRowAnimation:...];

您可能需要先插入该部分:

[_tableView insertSections:... withRowAnimation:..];

http://developer.apple.com/library/ios/ipad/#documentation/uikit/reference/UITableView_Class/Reference/Reference.html

于 2012-09-30T10:02:47.667 回答
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 时,您正在重新加载整个部分,而不仅仅是几行。我猜你的表格视图只有一个部分。

于 2012-09-29T23:59:46.723 回答
0

NSArray *paths = [_tableView indexPathsForVisibleRows];
[_tableView reloadRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationLeft];
将完全满足您的需求-仅重新加载可见的原始数据,不多也不少。

于 2012-09-30T00:17:49.637 回答
0

我发现这个问题只发生在 iOS 5.1 及更低版本上。无需提交错误,因为它已在 iOS 6 中得到纠正。无论如何感谢您的回答!

于 2012-09-30T23:07:54.750 回答