Я хочу вернуть несколько пользовательских UITableViewCells в зависимости от типа объекта, который я получаю из моего savedGames
массива, хранящегося в моем dataModel
. Мой вопрос в том, правильно ли я иду? Я не делал этого раньше и просто хотел убедиться, что я на правильном пути и не пропустил что-то очевидное.
Примечание: новые ячейки размещаются и инициируются в других местах, поэтому в приведенном ниже коде это не показано.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSUInteger row = [indexPath row];
SharedDataModel *dataModel = [SharedDataModel sharedInstance];
id genericGameAtRow = [[dataModel savedGames] objectAtIndex:row];
if([genericGameAtRow isMemberOfClass:[GameZoneOne class]]) {
CellZoneOne *cell = [tableView dequeueReusableCellWithIdentifier:@"ZONEONE_ID"];
return cell;
}
if([genericGameAtRow isMemberOfClass:[GameZoneTwo class]]) {
CellZoneTwo *cell = [tableView dequeueReusableCellWithIdentifier:@"ZONETWO_ID"];
return cell;
}
return nil;
}
РЕДАКТИРОВАТЬ: Быстрый вопрос возвращает ноль в нижней части полезно, я знаю, что это позволяет избежать метода, не имеющего возвращаемого значения, но если ни один из "если" сработает, вы получите "Должен вернуть ячейку "ошибка. Очевидно, что важно охватить все возможные варианты, но не лучше ли будет окончательное возвращение вместо стандартного (ванильного) UITableViewCell? ... просто любопытно.