有这个愚蠢的小东西让我烦恼,我很想听听你的意见。
我正在使用带有自定义UITableViewCell的UITableView来显示来自RSS提要的一些新闻项。这很有效,
唯一的问题是 - 当向下滚动时,我看到“旧”单元格,并且只有当我的滚动停止时,它才会加载新内容。
所以我的问题是 - 我可以以某种方式放置占位符,以便在滚动或其他某种指示时至少显示“加载”吗?
提前谢谢:)
晒
答案 0 :(得分:1)
您何时用内容填充单元格,通常在UITableViewDataSource
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
每次显示一个单元格时都会调用它。如果您设置数据表单,此处的单元格将在显示之前更新。
如果您从网上抓取某些内容(可能需要一些时间),则可以将您从网络抓取的任何内容设置为加载或占位符图片。
然后在UITableViewDelegate
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;
启动异步提取数据并在收到数据时更新单元格。
答案 1 :(得分:-1)
为避免重复新单元格中的先前数据,请使用唯一的CellIdentifier。
NSString *CellIdentifier = [NSString stringWithFormat:@"%i", indexPath.row];
NewsCell *cell = (NewsCell *) [tableView dequeueReusableCellWithIdentifier: CellIdentifier];
if (cell == nil)
{
cell = [[ActivitiesCell alloc] initWithStyle:UITableViewStylePlain reuseIdentifier:CellIdentifier];
}
在NewsCell.m文件中,使用以下代码并通过调用 initWithStyle 方法加载新单元格,而不是使用 loadNibNamed 。
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self)
{
// Initialization code.
}
return self;
}