У меня есть 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 не делает отличной работы.
Есть ли существует глубоко убирающая перерисовка?
У меня уже была такая проблема, поэтому я поделюсь с вами, как я ее решил:
Вы можете использовать булев флаг (скажем, он называется 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
. Просто, как прыщ.