Проблема заключается в том, что ваш cellForRowAtIndexPath неправильно использует dequeue.
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *SingleCellIdentifier = @"selectioncell";
UITableViewCell *selectionCell = [tableView dequeueReusableCellWithIdentifier:SingleCellIdentifier];
if(selectionCell == nil)
selectionCell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:SingleCellIdentifier] autorelease];
[selectionCell setSelectionStyle:UITableViewCellSelectionStyleBlue];
[selectionCell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
}
[[selectionCell textLabel] setText:[[possibleAnswers objectAtIndex:indexPath.row] answerText]];
}
Идея в том, что dequeueReusableCellWithIdentifier:
дает вам пригодную для использования ячейку, но если ни одна не доступна, она возвращает ноль; если это ноль, вы должны выделить его самостоятельно. Ваш код извлекал ячейку из очереди, но затем игнорировал ее и просто назначал ее независимо от статуса очереди. Попробуйте это и посмотрите, решит ли это вашу проблему.