繁体   English   中英

从可重复使用的单元中删除旧数据

[英]Removing old data from reusable cell

我有一个uitableview,每个单元格都有一个滚动视图作为子视图。 滚动视图中有一堆图像。 因此,当我更改数据源中的数据并调用重新加载表后,图像不会更改,但是当我删除出队时,将重新加载新数据。 有什么方法可以删除出队中的内容,以便我不获取旧数据

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{   
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"looser"];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault       reuseIdentifier:CellIdentifier] autorelease];
         scrollview=[[myscrollView alloc]initwitharray:imagearray];
         [cell.contentView addSubview:scrollview];
    }
}

表格视图的工作方式如下:

它在屏幕上具有一定数量的单元格的空间,以7为例。 表格视图将询问您索引0到6的7个单元格。

如果顶部单元格通过滚动离开屏幕,它将被放置在可重复使用的单元格队列中。 现在,表视图上有6个单元格。

现在在底部出现了一个新的视图,该表视图在索引7处请求该单元格。您调用dequeueReusableCell,然后获得之前位于顶部的单元格。

tableView不知道您的单元格是什么样子,因为它可以被子类化,因此不会对其进行任何更改。 取决于您如何构造表单元的知识来清空表单元,然后用正确的新数据填充它。

tableview之所以这样工作是为了提高性能。 每次滚动移动可能要检查100个视图(或者大多数情况下,将其忽略,这也要花费时间),而不是最多100个视图。

简而言之,不。 没有默认方法可以从UITableView中的可重用单元中删除数据,因为UITableView不能也不应该知道它们是哪种单元格。 当表格视图将其提供给您时,由您决定清除单元格。

创建一个自定义单元格并生成一个方法

- (void) prepareForReuse{}

您将从哪个单元中清除所有数据,输出将是一个空单元。

也许您应该删除不需要的东西。

不,不是在单元格在高速缓存中时。 当您使可重复使用的单元出队时,应先清除旧数据,然后再使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM