Фон ячейки неправильно повторяется в UITableViewCell при прокрутке - PullRequest
1 голос
/ 03 апреля 2010

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

Обратите внимание, что всегда один detailCell.detailTimeLabel.text равен currentTime.

Код, который у меня есть:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

... SOME MORE CODE HERE ...

        if ([detailCell.detailTimeLabel.text isEqualToString:currentTime]) {  
            UIView* backgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
            backgroundView.backgroundColor = [UIColor greenColor];
            detailCell.backgroundView = backgroundView;
            for (UIView* view in detailCell.contentView.subviews) 
            {
                view.backgroundColor = [UIColor clearColor];
            } 
        }   
    }

В чем может быть проблема?

1 Ответ

2 голосов
/ 03 апреля 2010

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

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

Как правило, вы никогда не должны ссылаться на данные в ячейках. Если вам нужно узнать, что находится в конкретной ячейке, посмотрите на данные по пути к индексу внутри самой модели данных.

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