У меня есть UITableView, который использует ячейки с пользовательскими backgroundViews.Я назначаю backgroundViews в tableView:cellForRowAtIndexPath:indexPath:
как предложено здесь .В двух словах, в зависимости от положения UITableViewCell в его UITableView, я хочу назначить определенные изображения backgroundView.Вот код, о котором идет речь:
UIImage *rowBackground = nil;
if (row == 0 && row == sectionRows - 1) {
rowBackground = [UIImage imageNamed:@"row_bg_start_and_end.png"];
} else if (row == 0) {
rowBackground = [UIImage imageNamed:@"row_bg_start.png"];
} else if (row == sectionRows - 1) {
rowBackground = [UIImage imageNamed:@"row_bg_end.png"];
} else {
rowBackground = [UIImage imageNamed:@"row_bg.png"];
}
((UIImageView *)cell.backgroundView).image = rowBackground;
Это прекрасно работает, и я вижу ожидаемые результаты.У меня, однако, есть проблемы, когда речь идет об удалении или добавлении строк, что неизменно означает, что определенные строки сохраняют свои прежние backgroundViews, а не пересчитывает их размещение и обновляет рассматриваемое представление.
Я понимаю цельdequeueReusableCellWithIdentifier и почему это происходит.Но я не уверен, как исправить это правильно .Я могу сказать, что строки правильно пересчитываются при вызове tableView:cellForRowAtIndexPath:indexPath:
, прокручивая их за пределами экрана, что приводит к корректному сбросу их backgroundView.
Должен ли я также задавать свойство backgroundView в willDisplayCell:forRowAtIndexPath:
?Как мне справиться с этой ситуацией?