UITableView占位符用于出列单元格
有这个愚蠢的小东西令人讨厌,我很想听听你对此的看法。UITableView占位符用于出列单元格
我正在使用带有自定义UITableViewCell的UITableView来显示RSS提要中的一些新闻项目。这是工作很好,
唯一的问题是 - 当向下滚动,我看到“旧”单元格,并且只有当我的滚动停止时,它会加载新的内容。
所以我的问题是 - 我可以以某种方式把一个占位符,所以它至少会显示滚动或其他类型的指示“加载”?
感谢提前:)
夏嘉曦
你什么时候你充满内容的单元格,通常你在UITableViewDataSource
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
这不这样做将被调用每前,需要一个时间单元显示它。如果你设置数据格式,这个单元格在显示之前会被更新。
如果您从网上抓取某些东西需要一些时间,那么您可以在此处设置从网络抓取的任何内容到装载或占位符图片。
然后在UITableViewDelegate
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;
启动数据的异步获取和接收到数据时更新该小区。
willDisplayCell解决方案听起来正是我所需要的!生病尝试,谢谢! :) –
嘿,我试过以下没有成功,任何想法我做错了什么? http://pastebin.com/hUGvGt5x –
你在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;
}
这似乎不是一个好主意,因为它会在内存中创建许多单元格,而不是重新使用一个这是我想要的 - 我只是想要一种方法来把一些“加载“,而滚动后更新数据。 –
它将重复使用具有相同标识符的相同单元。 –
是的,但它仍然会为每个单元格创建一个标识符,不是吗?关键是所有细胞都有一个标识符 - 我想。我对UITableView的使用经验相当缺乏:) –
你能告诉我们你的代码,特别是cellForRowAtIndexPath和你正在调用更新你的自定义单元格的方法吗?谢谢 – MartinMoizard
嘿马丁,这里是:)谢谢http://pastebin.com/2acWU42Y –