为什么此代码可以正常工作:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.textLabel.text = [NSString stringWithFormat:@"cell%i%i", indexPath.section, indexPath.row];
}
return cell;
}
据我了解单元格标识符,只有当我将cell.textLabel.text = ...
行移出if语句时,此代码才能正常工作。换句话说,为什么标签有正确的文本???
答案 0 :(得分:6)
尝试创建比您在屏幕上看到的更多的单元格,一旦它们出列,它们将不再具有您期望的文本...
基本上你可以在屏幕上看到5行左右,但是一旦你开始滚动,你就会看到一些“有趣”的东西:)
答案 1 :(得分:0)
创建的单元格被重用。这意味着该对象被标记为可重用(从而节省了对象的完整创建)。
因此,一旦它滚出屏幕,单元格就会被标记为可重复使用。因此,在创建新单元之前,首先要检查是否有任何可重用的单元格([tableView dequeueReusableCellWithIdentifier :)。
您需要设置的文本,因为它(可能)对于表的每个单元格都不同,但与对象创建/销毁无关。