Я перехожу на 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;
}
Я видел примеры, когда блок 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;
}