Я перехожу на 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. Как инициализировать пользовательскую ячейку, которую я создал на раскадровке?
У старого приложения pre-5 был nib и класс, который использовал что-то вроде этого, но теперь я использую раскадровку.
- (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;
}