UITableViewCell - 加载25个单元格 - 不重复使用

时间:2010-11-08 22:29:58

标签: iphone uitableview

我有25个表格单元格,我想将它们加载到一起,而不重复使用它们。

任何想法?

2 个答案:

答案 0 :(得分:5)

如果您想避免回收表格单元格,则可以避免在dequeueReusableCellWithIdentifier:方法中调用tableView:cellForRowAtIndexPath:

如果要对所有单元格进行一次性初始加载,可以在表格的数据源的init方法中执行以下操作:

// myCellArray is an instance var of type NSMutableArray.
myCellArray = [NSMutableArray new];
for (int i = 0; i < 25; ++i) {
  NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0];
  UITableViewCell *cell = [self tableView:tV cellForRowAtIndexPath:indexPath];
  [myCellArray addObject:cell];
}

这会将单元格保留在内存中,因为它们会被myCellArray保留给您。

为了提高效率,您的cellForRowAtIndexPath:方法可以是这样的:

- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  if ([myCellArray count] > indexPath.row) {
    return [myCellArray objectAtIndex:indexPath.row];
  }
  return [self createCellAtRow:indexPath.row];
}

但是,您需要小心使用比您认为需要更多的内存,并避免花费太多时间初始化表。在许多情况下,如果您只是以标准方式使用回收的单元格,您的应用程序可能会显得更快并且使用更少的内存(例如,建议在the UITableViewDataSource docs中)。

答案 1 :(得分:0)

您无法将它们全部加载在一起。但对于“不可重用”单元,您可以制作唯一的单元可重用标识符。因此,它需要相同的(第一,第二,第三)单元格 - 它可以已经创建了一个单元格。对于新细胞,它们将根据需要创建。

如果您需要一次加载所有单元格,可以调用

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

在viewDidLoad中为您需要的每个indexPath。