用于出列单元格的UITableView占位符

时间:2011-09-19 08:40:58

标签: iphone ios uitableview placeholder


有这个愚蠢的小东西让我烦恼,我很想听听你的意见。

我正在使用带有自定义UITableViewCell的UITableView来显示来自RSS提要的一些新闻项。这很有效,

唯一的问题是 - 当向下滚动时,我看到“旧”单元格,并且只有当我的滚动停止时,它才会加载新内容。

所以我的问题是 - 我可以以某种方式放置占位符,以便在滚动或其他某种指示时至少显示“加载”吗?

提前谢谢:)

2 个答案:

答案 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;
    }