UITableView: Обработка выбора ячеек в таблице со смешанными ячейками. Просмотр статических и динамических ячеек.

Я пытаюсь смешать динамические и статические ячейки в сгруппированном табличном представлении: я хотел бы получитьдве секции со статическими ячейками на вершине следуетсечение динамических ячеек (пожалуйста, обратитесь к скриншоту ниже). Я установил содержимое табличного представления встатические ячейки.

редактировать

Основываясь на советах AppleFreak, я изменил свой код следующим образом:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell;
    if (indexPath.section <= 1) { // section <= 1 indicates static cells
        cell = [super tableView:tableView cellForRowAtIndexPath:indexPath]; 
    } else { // section > 1 indicates dynamic cells
        CellIdentifier = [NSString stringWithFormat:@"section%idynamic",indexPath.section];
        cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    }
return cell;

}

Однако мое приложение вылетает с сообщением об ошибке

Завершение приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «UITableView dataSource должен вернуть ячейку из tableView: cellForRowAtIndexPath:»

для раздела 0 и строки 0. Ячейка вернулась изcell = [super tableView:tableView cellForRowAtIndexPath:indexPath] для раздела 0 и строки 0nil.

Что не так с моим кодом? Могут ли быть какие-либо проблемы с моими розетками? Я не установил никаких выходов, потому что я подклассUITableViewController и предположительно не нужно устанавливать какие-либо выходы для просмотра таблицы (?). Любые предложения о том, как лучше это сделать?

Редактировать II

Я воссоздал свою сцену в раскадровке (см. Мой обновленный снимок экрана выше) и переписал контроллер представления, чтобы начать с новой базы. Я также прочитал описание на форуме Apple, как предложил applefreak. Тем не менее, я бегу в моей первой проблеме с методомnumberOfSectionsInTableView:tableView, в котором я увеличиваю количество статических разделов (два) на один.

  - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return [super numberOfSectionsInTableView:tableView] + 1 ; }

Приложение упало с сообщением об ошибке:

Завершение работы приложения из-за необработанного исключения «NSRangeException», причина: «*** - [__ NSArrayI objectAtIndex:]: индекс 2 за пределами [0 .. 1]»

Почему этот код не работает для меня, хотя я следовал рекомендациям Apple и Applefreak? Возможно, что tableView немного изменился в iOS 6?

РешениеЯ получил это, чтобы работать теперь, используя пример кода AppleFreaks в своем ответе ниже. Спасибо, AppleFreak!

Редактировать III: Выбор ячейки:

Как я могу справитьсявыбор ячейки в представлении таблицы ячеек со смешанными (динамическими и статическими ячейками)? Когда я звонюsuper и когда я позвонюself tableView? Когда я использую

[[super tableView] selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone]

и попробуйте проверить выбранные пути индекса с помощью:

UITableView *tableView = [super tableView];
if ( [[tableView indexPathForSelectedRow] isEqual:customGrowthIndexPath] ) { .. }

Я получаю возвращаемое значениеnil.

Так как я не могу найти источник моей ошибки, я действительно буду признателен за вашу помощь

Ответы на вопрос(6)

Ваш ответ на вопрос