UITableView占位符用于出列单元格

UITableView占位符用于出列单元格

问题描述:


有这个愚蠢的小东西令人讨厌,我很想听听你对此的看法。UITableView占位符用于出列单元格

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

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

所以我的问题是 - 我可以以某种方式把一个占位符,所以它至少会显示滚动或其他类型的指示“加载”?

感谢提前:)
夏嘉曦

+0

你能告诉我们你的代码,特别是cellForRowAtIndexPath和你正在调用更新你的自定义单元格的方法吗?谢谢 – MartinMoizard

+0

嘿马丁,这里是:)谢谢http://pastebin.com/2acWU42Y –

你什么时候你充满内容的单元格,通常你在UITableViewDataSource

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

这不这样做将被调用每前,需要一个时间单元显示它。如果你设置数据格式,这个单元格在显示之前会被更新。

如果您从网上抓取某些东西需要一些时间,那么您可以在此处设置从网络抓取的任何内容到装载或占位符图片。

然后在UITableViewDelegate

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath; 

启动数据的异步获取和接收到数据时更新该小区。

+0

willDisplayCell解决方案听起来正是我所需要的!生病尝试,谢谢! :) –

+0

嘿,我试过以下没有成功,任何想法我做错了什么? http://pastebin.com/hUGvGt5x –

+0

你在tableview中使用webview吗?问题在于你对web视图没有足够的控制权。它只会开始加载,我们可以看到它。 – rckoenes

为避免新单元格中以前数据的重复,请使用唯一的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; 
    } 
+0

这似乎不是一个好主意,因为它会在内存中创建许多单元格,而不是重新使用一个这是我想要的 - 我只是想要一种方法来把一些“加载“,而滚动后更新数据。 –

+0

它将重复使用具有相同标识符的相同单元。 –

+0

是的,但它仍然会为每个单元格创建一个标识符,不是吗?关键是所有细胞都有一个标识符 - 我想。我对UITableView的使用经验相当缺乏:) –