cell.backgroundColor вопрос - PullRequest
       11

cell.backgroundColor вопрос

3 голосов
/ 05 сентября 2011

Я нашел этот удобный код в интернете,

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
 cell.backgroundColor = (indexPath.row%2)?[UIColor grayColor]:[UIColor clearColor];
 }

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

Спасибо!

Ответы [ 2 ]

12 голосов
/ 05 сентября 2011

И darkGrayColor, и lightGrayColor являются допустимыми названиями цветов, поэтому измените их на код ниже. Все, что я сделал, это сменил названия цветов.

(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    cell.backgroundColor = (indexPath.row%2)
        ? [UIColor lightGrayColor]
        : [UIColor darkGrayColor];
}

Объяснение того, как работают цвета чередующихся строк : indexPath.row % 2 выполняет модуль индекса: если у него нет остатка при делении на два, цвет будет lightGrayColor; в противном случае это будет darkGrayColor. Я немного расширил код, чтобы сделать его более понятным.

1 голос
/ 05 сентября 2011

Есть хороший пример того, как чередовать цвета фона ячеек, сделанные Apple: он называется AdvancedTableViewCells и фактически является ячейкой табличного представления, используемой в App Store.

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

self.backgroundView = [[[UIImageView alloc] initWithImage:backgroundImage] autorelease];

Если у вас возникли проблемы с пониманием примера, дайте мне знать ...

...