Как изменить цвет строки UITableView, когда она выбрана? - PullRequest
1 голос
/ 24 февраля 2011

Я искал ответы на этот вопрос, но еще не нашел тот, который работает Все, что я хочу сделать, это иметь возможность изменить цвет фона или изображение выбранной строки UITableView.

Я привык просто переходить между представлениями, когда вы выбираете строку, но на этот раз я хочу иметь возможность изменять свойства этих строк. Я знаю, какую строку я хочу изменить, с помощью indexPath.row, но я не знаю, как бы я изменил внешний вид строки, потому что метод cellForRowAtIndexPath уже был вызван!

Что я могу сделать, чтобы изменить цвет?

Ответы [ 2 ]

6 голосов
/ 24 февраля 2011

Вы бы сделали это так:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    //First you get the cell you want to change
    UITableViewCell* theCell = [tableView cellForRowAtIndexPath:indexPath];

    //Then you change the properties (label, text, color etc..) in your case, the background color
    theCell.contentView.backgroundColor=[UIColor redColor];

    //Deselect the cell so you can see the color change

    [tableView deselectRowAtIndexPath:indexPath animated:YES];

}

Просто убедитесь, что вы учитываете это изменение цвета при переработке ячеек.

Если вам нужна дополнительная информация, просто оставьте комментарий.

4 голосов
/ 24 февраля 2011

Установить переменную для активной строки:

int activeRow;

При построении ячейки проверьте, является ли она активной строкой, и установите цвет фона

if (indexPath.row == activeRow) {
    cell.setMyBackgroundColor = [UIColor myCoolColor];
} else {
    cell.setMyBackgroundColor = [UIColor normalColor];
}

Не забудьте установить цвет фона даже в обычном случае, так как они используются повторно.

При выборе (или в случае необходимости) обновите эту конкретную ячейку:

NSArray *paths = [NSArray arrayWithObject:indexPath];
[self.tableView reloadRowsAtIndexPaths:paths withRowAnimation:YES];

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...