Использование нескольких пользовательских UITableViewCells - PullRequest
0 голосов
/ 08 августа 2011

Я пытаюсь создать сгруппированный стиль UITableView, такой как подробный вид приложений Контакт. Я хочу, чтобы верхняя ячейка была прозрачной и имела UISegemtedControl внизу.

Когда я пытаюсь создать два разных типа пользовательских ячеек, загружается только первый, хотя я использую два разных cellIdentifiers.

Буду признателен за руководство сома. Или несколько хороших советов по той же теме.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    /*
    UIView *backView = [[UIView alloc] initWithFrame:CGRectZero];
    backView.backgroundColor = [UIColor clearColor];
    cell.backgroundView = backView;
    [backView release];
    */

    static NSString *cellIdentifier1 = @"DetailCellStyle1";
    static NSString *cellIdentifier2 = @"DetailCellStyle2";

    if (indexPath.section == 0) {

        // Load from nib
        DetailCellViewController *cell = (DetailCellViewController *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier1];
        if (cell == nil) {
            NSArray *topLevelObjects = [[NSBundle mainBundle]
                                        loadNibNamed:@"DetailCellView" 
                                        owner:nil 
                                        options:nil];

            for (id currentObject in topLevelObjects) {
                if ([currentObject isKindOfClass:[UITableViewCell class]]) {
                    cell = (DetailCellViewController *) currentObject;
                    break;
                }
            }
        }

        return cell;
    }
    else  {
        // Load from nib
        DetailCellViewController2 *cell = (DetailCellViewController2 *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier2];
        if (cell == nil) {
            NSArray *topLevelObjects = [[NSBundle mainBundle]
                                        loadNibNamed:@"DetailCellView" 
                                        owner:nil 
                                        options:nil];

            for (id currentObject in topLevelObjects) {
                if ([currentObject isKindOfClass:[UITableViewCell class]]) {
                    cell = (DetailCellViewController2 *) currentObject;
                    break;
                }
            }
        }

        return cell;
    }

    return nil;
}

Ответы [ 2 ]

2 голосов
/ 08 августа 2011

Вы загружаете ячейку 1 и ячейку 2 точно таким же образом, беря первый объект типа UITableViewCell в наконечнике «DetailCellView».Поэтому в обоих случаях вы получаете одну и ту же клетку.

0 голосов
/ 08 августа 2011

Ну, если честно, я тоже не уверен, но вызов загрузки только эффективен, когда ячейка равна нулю, возможно, попытайтесь загрузить второй как еще в вызове if(cell == nil) ... потому чтов конце кода вы снова устанавливаете ноль ... так что, возможно: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...