0

私の UITableView には、いくつかのカスタム セルがあり、次に 10 回繰り返す必要がある 1 つのカスタム セルがあり、それぞれの 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

1 つのセル (genreCell) を複数の indexPath に同時に使用することはできません。

于 2012-07-22T21:22:12.427 に答える
0

識別子は 1 つしかありませんが、複数の異なるセルがありますか? そして、あなたはセルを正しく再利用する方法を知らないと思います。

このようなものを試してみてください...

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 に答える