0

在我的 UITableView 中,我有几个自定义单元格,然后是一个需要重复 10 次的自定义单元格,每个单元格中的 UILabel 值不同。一切都很好,直到我尝试多次重用我的最后一个自定义单元格。发生的情况是最后一个单元格正确绘制,但前 9 个单元格显示为空白,单元格之间没有拆分。

这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath (NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = nil;

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

// Configure the cell...
switch (indexPath.row) {
    case 0:
        cell = nameCell;
        break;
    case 1:
        cell = globalSettingsCell;
        break;
    case 2:
        cell = queueTypeCell;
        break;
    case 3:
        cell = starMinCell;
        break;
    case 4:
        cell = lengthMaxCell;
        break;
}

if (indexPath.row > 4) {
    cell = genreCell;
    genreLabel.text = [genres objectAtIndex:(indexPath.row - 5)];
}

return cell;

}

4

2 回答 2

0

您不能同时将一个单元格 (genreCell) 用于多个 indexPath。

于 2012-07-22T21:22:12.427 回答
0

您只有一个标识符,但有多个不同的单元格?而且我认为您不知道如何正确重用 Cells。

尝试这样的事情......

static NSString *CellIdentifier_1 = @"Cell_1";
static NSString *CellIdentifier_2 = @"Cell_2";
//...
UITableViewCell *cell = nil;
switch (indexPath.row) {
    case 0:
        cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier_1]; 
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier_1] autorelease];
        }
        break;
    case 1:
        cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier_2];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier_2] autorelease];
        }
        break;
}
于 2012-07-22T21:23:05.530 回答