我在UITableViewCell定义中使用UIWebView来显示项目图标:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (!cell) {
cell = [[[NSBundle mainBundle] loadNibNamed:@"PostCell" owner:self options:nil] objectAtIndex:0];
}
NSDictionary *post = [posts objectAtIndex:indexPath.row];
UIWebView *iconWebView = (UIWebView*)[[cell contentView] viewWithTag:1];
[iconWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[post objectForKey:@"mMediumResImage"]] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60.0f]];
mMediumResImage
是指向大小约为40-60 kb的图像的网址。
UITableView
持有的行数是~20-30。
除了查看图标之外,没有图标的预期功能,没有用户交互。我宁愿使用UIWebView
而不是设置一个队列来将每个图标加载到一个数组中,要求我跟踪我的加载过程,完成后要更新的索引路径等等。这个方法允许我快速和只需显示一个图标。
是否禁止使用UIWebView?
如果是这样,你建议作为替代方案?
答案 0 :(得分:0)
这对我来说似乎有点沉重。我建议你从apple:LazyTableImages学习这段示例代码。你现在拥有的是工作,所以这很好。当你有时间时,回过头来使用该样本中说明的技术对其进行优化。
LazyTableImages示例包含一个带有顶级iPhone应用程序的UITableView。它从RSS提要中获取应用程序及其图标。应用程序图标根据需要“延迟加载”,因此列表将快速显示并平滑滚动。 IMO,非常值得研究他们在那里所做的事情。