有人可以解释
之间的区别static NSString* CellIdentifier = @"Cell";
和
NSString *CellIdentifier = [NSString stringWithFormat: @"Cell%i", indexPath.row];
我应该何时使用第一个?第二个?
答案 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;
}