0

我正在开发一个 iPad 应用程序,在该应用程序上我有一个非常大的 UITableView(大约 10 倍的屏幕宽度和高度),并且在它之上还有一个 UIScrollView,我可以水平滚动。

在每个 UITableViewCell 中,我添加了不同数量的 UIView。我的问题是滚动性能真的很差。所以我在谷歌上搜索了一个解决方案,但没有找到适合我的问题的任何东西。

我认为问题是当滚动完成时整个屏幕被重绘,但我不知道如何限制这个......

任何人都可以提供解决方案吗?

谢谢。

4

3 回答 3

1

你需要做 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"]; 恢复细胞。如果你还没有,你应该做的是:

在你的

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

方法,你需要:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"] autorelease];
}

从 Apple 的文档中查看这一点。

希望这可以帮助。

于 2012-05-15T13:10:32.877 回答
1

您将需要保持单元格的可重用性,并且只加载可见区域所需的视图。就像我们对图像进行延迟加载一样。

于 2012-05-15T13:01:16.213 回答
1

提高性能的简单关键是不要在cellForRowAtIndexpath.

您可以使用许多技巧来提高性能。例如,在后台线程中加载您的视图。

这篇SO 帖子描述了各种技巧。

于 2012-05-15T13:02:22.597 回答