Вы игнорируете номер секции в cellForRowAtIndexPath, поэтому, если, когда tableView запрашивает строку 1 секции 3 (четвертую запись в секции B), то вы возвращаете четвертую запись в массиве упражнений в «A" раздел.Вам нужно будет либо реструктурировать «упражнения», чтобы можно было индексировать по разделам (первая буква), а затем по строке ИЛИ вычислять соответствующую запись в упражнениях.
Вам следует прочитать документацию Apple по TableViews.См. Раздел «Создание и настройка табличного представления», который называется «Заполнение индексированного списка», чтобы получить помощь в создании массива массивов.В Apple TableView есть пример.
Если вы действительно не хотите реструктурировать свой plist в массив массивов, как это было предложено, то вы можете грубо заставить вычислить соответствующую строку в вашей матрице упражнений следующим образом ...
Вместо
cell.textLabel.text=[exercises objectAtIndex:indexPath.row];
Попробуйте:
int realRow = indexPath.row;
for (int i = 0; i < indexPath.section; i++ ) {
realRow += [self tableView:tableView numberOfRowsInSection:i];
}
cell.textLabel.text=[exercises objectAtIndex:realRow];