我有一个带有大量单元格的 UITableViewController ,但它们都具有相同的配置 - 它只是不同的单元格内容。这是我的 UITableViewController 中的tableView:cellForRowAtIndexPath:
方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"WSTableViewCell";
WSTableViewCell *cell = (WSTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[WSTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
WSObject *item = [self.fetchedResultsController objectAtIndexPath:indexPath];
[cell.textLabel setText:item.title];
return cell;
}
以下是我的自定义 UITableViewCell 中的initWithStyle:reuseIdentifier:
:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
[self.textLabel setFont:[UIFont boldSystemFontOfSize:12]];
[self.textLabel setTextColor:[UIColor colorWithRed:100.0/255.0 green:100.0/255.0 blue:100.0/255.0 alpha:1.0]];
[self.textLabel setHighlightedTextColor:[UIColor colorWithRed:100.0/255.0 green:100.0/255.0 blue:100.0/255.0 alpha:1.0]];
[self.textLabel setNumberOfLines:2];
}
return self;
}
我刚刚注意到,为表格视图中的每个单元格调用此initWithStyle:reuseIdentifier:
,并且 UITableViewController 中的dequeueReusableCellWithIdentifier:
始终返回 nil 。据我了解这种具有可重用单元的机制,这种单元只应在使用相同的单元标识符时初始化一次。我在这里缺少什么?
答案 0 :(得分:1)
仅当单元格在屏幕外滚动时才会重复使用。假设一个屏幕显示11个单元格,您将分配11个单元格,在滚动时重复使用。