禁用具有有限行数的UITableView的虚拟化(单元重用)

时间:2014-10-12 19:54:10

标签: ios uitableview

我有UITableView行数有限(让我们说20-30)。 是否可以禁用单元重用?

Most of solutions建议不要致电dequeueReusableCellWithIdentifier。 但在这种情况下,每次UITableViewSource需要新单元格时,都会创建该单元格的新实例。

我想要的是,一旦我向下滚动并看到所有20-30个单元格,在我回来的路上不应该创建新的单元格。

有可能吗?

2 个答案:

答案 0 :(得分:3)

即使您使用唯一标识符,也不能依赖重用池大小足以存储您尝试执行的20-30个唯一单元格。

您需要在数组或字典中保留对单元格的引用,并使用它来获取cellForRowAtIndexPath中的单元格 - 例如 -

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *cellIdentifier=[NSString stringWithFormat:@"Cell%d",indexPath.row];

    UITableViewCell *cell=self.cellDictionary[cellIdentifier];

    if (cell == nil) {
          cell=[[MyCell alloc]init];  // Do whatever is required to allocate and initialise your cell
          self.cellDictionary[cellIdentifier]=cell;
    }

    // Any other cell customisation

    return cell;
}

除非细胞创建非常昂贵,否则重复使用通常是一种更好的方法

答案 1 :(得分:1)

我相信你可以为每个单元分配一个唯一的重用标识符(只是一个基于索引路径和行的字符串)。