重复的自定义UITableViewCell仅绘制最后一个单元格

时间:2012-07-22 20:36:22

标签: objective-c ios uitableview

在我的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;

}

2 个答案:

答案 0 :(得分:0)

您不能同时为多个indexPath使用一个单元格(流派单元格)。

答案 1 :(得分:0)

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

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

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;
}