UITableView中单元格的右侧CellIdentifier

时间:2012-04-04 17:11:12

标签: objective-c ios uitableview

有人可以解释

之间的区别
static NSString* CellIdentifier = @"Cell";

NSString *CellIdentifier = [NSString stringWithFormat: @"Cell%i", indexPath.row];

我应该何时使用第一个?第二个?

1 个答案:

答案 0 :(得分:4)

static NSString* CellIdentifier = @"Cell";

这个标识符(假设没有其他标识符)将标识一个单元池,当需要一个新单元格时,所有行都将从中拉出。

NSString *CellIdentifier = [NSString stringWithFormat: @"Cell%i", indexPath.row];

此标识符将为每一行创建一个单元池,即它将为每一行创建一个大小为1的池,并且该单元将始终仅用于该行。

通常,您需要始终使用第一个示例。第二个例子的变化如下:

NSString *CellIdentifier = [NSString stringWithFormat: @"Cell%i", indexPath.row % 2];
如果您希望每隔一行具有某种背景颜色或类似的东西,

将非常有用。

如何从here正确设置单元格创建的示例:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"] autorelease];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }

    NSDictionary *item = (NSDictionary *)[self.content objectAtIndex:indexPath.row];
    cell.textLabel.text = [item objectForKey:@"mainTitleKey"];
    cell.detailTextLabel.text = [item objectForKey:@"secondaryTitleKey"];
    NSString *path = [[NSBundle mainBundle] pathForResource:[item objectForKey:@"imageKey"] ofType:@"png"];
    UIImage *theImage = [UIImage imageWithContentsOfFile:path];
    cell.imageView.image = theImage;

    return cell;
}