Я перехожу на 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;
}