有人可以解释两者之间的区别吗
static NSString* CellIdentifier = @"Cell";
和
NSString *CellIdentifier = [NSString stringWithFormat: @"Cell%i", indexPath.row];
我应该什么时候使用第一个,第二个在哪里?
有人可以解释两者之间的区别吗
static NSString* CellIdentifier = @"Cell";
和
NSString *CellIdentifier = [NSString stringWithFormat: @"Cell%i", indexPath.row];
我应该什么时候使用第一个,第二个在哪里?
static NSString* CellIdentifier = @"Cell";
这个标识符(假设没有其他标识符)将标识一个单元池,当需要新单元时,所有行都将从该池中提取。
NSString *CellIdentifier = [NSString stringWithFormat: @"Cell%i", indexPath.row];
此标识符将为每一行创建一个单元池,即它将为每一行创建一个大小为 1 的池,并且一个单元将始终仅用于该行。
通常,您会希望始终使用第一个示例。第二个示例的变体如下:
NSString *CellIdentifier = [NSString stringWithFormat: @"Cell%i", indexPath.row % 2];
如果您希望每隔一行都具有某种背景颜色或类似的东西,这将很有用。
如何从此处正确设置单元创建的示例:
- (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;
}