Как инициализировать пользовательскую ячейку таблицы стилей прототипа в раскадровках iOS 5?

Я перехожу на iOS 5 и раскадровки. Когда у меня есть табличное представление со стилем ячеек по умолчанию, все работает нормально.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifierFromStoryboard"];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MyIdentifierFromStoryboard"];
    }
    return cell;
}

I видели примеры удаления блока «if (cell == nil)». Однако, если я его сниму, мое приложение выйдет из строя с сообщением: «UITableView dataSource должен вернуть ячейку из tableView: cellForRowAtIndexPath:». Это не проблема, потому что это работает, как показано выше.

Моя проблема в том, что я хочу использовать собственный стиль для ячейки и, следовательно, не могу использовать initWithStyle. Как мне инициализировать пользовательскую ячейку, которую я создал на раскадровке?

в старом приложении до 5-го поколения были перо и класс, которые использовали что-то вроде этого, но теперь я использую раскадровку.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    MyCustomTableCell *cell = (MyCustomTableCell *) [tableView dequeueReusableCellWithIdentifier:@"MyCustomIdentifier"];
    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyCustomTableCell" owner:self options:nil];
        cell = (MyCustomTableCell *) [nib objectAtIndex:0];
    }
    return cell;
}
36
задан gazzola 10 January 2013 в 20:00
поделиться