Почему вы хотите это сделать (изменив значение indexPath)?
Этот метод вызывается всякий раз, когда пользователь выбирает строку в табличном представлении, и [indexPath row]
даст вам индекс этой строки.
Возможно, проблема связана с тем, как вы храните индексы истинных ответов в массиве truerep
, не в состоянии сравнить прямой индекс строки с val1
.
Я не знаю, что предполагается содержать truerep
и [truerep objectAtIndex:0]
, но в вашем примере val1
выглядит как индекс строки для правильного ответа и не соответствует реальному правильному ответу индекс строки.
Кроме того, если вы хотите, чтобы две ячейки были цветными, вам придется немного изменить свой код.
Здесь, с if/else
, вы получаете только один цвет, когда пользователь выбирает строку.
РЕДАКТИРОВАТЬ на основе ваших комментариев
Вы, вероятно, хотите перебрать все строки и определить, какие из них должны быть окрашены в красный и зеленый цвета. Вот пример:
-(void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSUInteger rowIndex = [indexPath row];
NSNumber *value = [truerep objectAtIndex:0];
NSUInteger val1 = [value integerValue]; // index of the correct answer row
UITableViewCell *cell;
if(rowIndex = val1) { // only color the right cell in green
cell = [tableView cellForRowAtIndexPath:ip];
cell.contentView.backgroundColor = [UIColor greenColor];
}
else {
for(rowIndex = 0; rowIndex < totalRowsCount; rowIndew += 1) {
NSIndexPath *ip = [NSIndexPath indexPathWithIndex:rowIndex];
cell = [tableView cellForRowAtIndexPath:ip];
if(val1 == rowIndex) {
cell.contentView.backgroundColor = [UIColor greenColor];
}
else {
cell.contentView.backgroundColor = [UIColor redColor];
}
}
}
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
Вы наверняка знаете значение для totalRowsCount
..