Вынудите UITableView вывести все допускающие повторное использование ячейки

У меня есть UITableView, где у меня есть backgroud набор цветов через

UIView *myView = [[UIView alloc] init];
if ((indexPath.row % 2) == 0)
    myView.backgroundColor = [UIColor greenColor];
else
    myView.backgroundColor = [UIColor whiteColor];

cell.backgroundView = myView;
[myView release];

Проблема, которую я нахожу, состоит в том, что, когда я редактирую таблицу (через setEditing:YES...) некоторые ячейки той же цветной постоянной величины друг рядом с другом. Как я вынуждаю UITableView полностью перерисовать. reloadData не делает отличной работы.

Есть ли существует глубоко убирающая перерисовка?

5
задан John Smith 7 July 2010 в 18:42
поделиться

1 ответ

У меня уже была такая проблема, поэтому я поделюсь с вами, как я ее решил:

Вы можете использовать булев флаг (скажем, он называется needsRefresh), чтобы контролировать поведение создания ячеек в -cellForRowAtIndexPath:

Пример:

- (UITableViewCell*) tableView:(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath*) indexPath {
    UITableViewCell *cell = [tableView dequeueResuableCellWithIdentifier:SOME_ID];
    if(!cell || needsRefresh) {
       cell = [[[UITableViewCell alloc] init....] autorelease];
    }
    //.....
    return cell;
}

Итак, когда вам нужна жесткая перезагрузка, установите флаг needsRefresh в YES. Просто, как прыщ.

4
ответ дан 14 December 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: