Я решил эту проблему, создав подкласс для каждого UITableViewCell. Когда вы сравниваете тип класса, вы можете указать тип ячейки:
cell = (FooterTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"footerTableViewCell"];
if (cell == nil){
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CommonTableViewCell" owner:nil options:nil];
for (id currentObject in topLevelObjects){
if ([currentObject isKindOfClass:[FooterTableViewCell class]]){
cell = (FooterTableViewCell *)currentObject;
return cell;
}
}
}
У меня есть несколько таблиц, в которых повторно используется один и тот же вид форматирования ячеек, и я хотел иметь их в общем XIB, который я могу изменить в любое время. В .h для этого контроллера я просто объявил три подкласса UITableViewCell для каждого из трех типов ячеек.