UITableViewCell在不可见时隐藏内容

时间:2014-07-16 14:25:44

标签: ios objective-c uitableview

我在一些uitableview行中有gif动画图片,

当tableview中有很多GIF时,CPU使用率会非常高,

所以当他们的行不可见时我想隐藏这些GIF,

我该怎么做?

如何实现不可见的单元格行的indexPath?

之后我可以隐藏这样的gif:

UITableViewCell *celll = [ tableView cellForRowAtIndexPath:indexPath];
UIImageView *gif = (UIImageView*)[celll viewWithTag:30000];
gif.hidden = TRUE;

所以我必须在循环中获得不可见的单元indexPath。

3 个答案:

答案 0 :(得分:1)

通常,只要您正确使用可重复使用的细胞,您就不需要这样做 不过,如果您确实想这样做,可以在tableView:didEndDisplayingCell:forRowAtIndexPath:上使用UITableViewDelegate方法:

- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell
                                              forRowAtIndexPath:(NSIndexPath *)indexPath {
    UIImageView *gif = (UIImageView*)[celll viewWithTag:30000];
    gif.hidden = YES;
}

答案 1 :(得分:0)

如果您将该行:

    NSLog(@"%@",indexPath);

作为方法的第一行:

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

您会意识到它已自动完成。只有可见的单元格,即屏幕上显示的单元格,才能显示数据。

答案 2 :(得分:0)

对不起英文不好。你还没有发布有关你的cellForRowAtIndexPath实现方式的代码,我建议将你的cellForRowAtIndexPath改为如下所示。

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

    static NSString *CellIdentifier = @"YOURIDENTIFIERSTRING";

    UITableViewCell *cell = [tableView dequeReusableCellWithIdentifier: CellIdentifier forIndexPath:indexPath]; 

   // Configure the cell here …

   return cell;
}

这种方式只会创建在设备上可见的那些单元格,一旦行退出设备视图,它将重新用于新行。请检查apple doc for tableview