У меня есть приложение с UITableView, использующее значки и кнопки раскрытия. Я хочу обновить значок в строке с «выбранным» значком, и обновить ранее выбранную строку с «невыбранным» значком. У меня есть код на месте, но когда я нажимаю на строки, он устанавливает обе строки в «выбранное» состояние, хотя при отладке я вижу, что моя переменная состояния устанавливается на правильную строку. Если я продолжаю нажимать на строки, я иногда могу отображать состояние «невыбранный». Я подозреваю, что это проблема обновления, но я попробовал метод setNeedsDisplay для ячеек и самого tableView, но безуспешно. Кто-нибудь сталкивался с этим раньше? Кстати, это в симуляторе (2.2.1) - не пробовал на устройстве.
Вот код:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
int newRow = [indexPath row];
int oldRow = [lastIndexPath row];
if (newRow != oldRow)
{
[[tableView cellForRowAtIndexPath:indexPath] setImage: [UIImage imageNamed:@"IsSelected.png"]];
c_oListPtr.c_sCurItem = [[tableView cellForRowAtIndexPath:indexPath] text];
[[tableView cellForRowAtIndexPath:lastIndexPath] setImage: [UIImage imageNamed:@"NotSelected.png"]];
[lastIndexPath release];
lastIndexPath = indexPath;
[[tableView cellForRowAtIndexPath:lastIndexPath] setNeedsDisplay];
[[tableView cellForRowAtIndexPath:indexPath] setNeedsDisplay];
[tableView setNeedsDisplay];
}
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
Спасибо
-Mike