cell的复用
小细节:
1. All the cells that are visible in the Table have its one UITableViewCell.
2. The UITableView only put cells in the reusable queue when they go outside the visual window.
3. In the first time, all the visible cells in the table are loaded using the Nib file (7,8, 10 times, depending on the height of the cells).
4. Once you start scrolling the table is when UITableView starts to put UITableViewCells in the reusable queue and can be reused in other positions of the table.
下面是苹果官方的“UICatalog”中关于cell 使用的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = nil;
static NSString *kDisplayCell_ID = @"DisplayCellID";
cell = [self.tableView dequeueReusableCellWithIdentifier:kDisplayCell_ID];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:kDisplayCell_ID] autorelease];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
else
{
/** 此时,该CELL被复用,则清除这个CELL上之前添加的控件 */
// the cell is being recycled, remove old embedded controls
UIView *viewToRemove = nil;
viewToRemove = [cell.contentView viewWithTag:kViewTag];
if (viewToRemove)
[viewToRemove removeFromSuperview];
}
cell.textLabel.text = [[self.dataSourceArray objectAtIndex: indexPath.section] valueForKey:kLabelKey];
UIButton *button = [[self.dataSourceArray objectAtIndex: indexPath.section] valueForKey:kViewKey];
[cell.contentView addSubview:button];
return cell;
}