Всякий раз, когда я создаю новую ячейку, возникает странная магия. Если я выйду из контроллера просмотра позже (со всеми сохраненными данными) и снова вернусь к контроллеру представления (с перезагрузкой данных и т. Д.), Все в порядке (но если я останусь в контроллере просмотра, он перепутался)UITableViewCell willDisplayCell метод conundrum
Теперь позвольте мне описать эту странную магию:
- у меня есть обычай UITableViewCell
- Когда indexPath даже, синий круг существует в нем
- Когда indexPath нечетное, зеленый прямоугольник в нем
Однако, когда создается новая ячейка, в ней есть зеленый прямоугольник и синий круг, как это возможно?
- (void)tableView:(UITableView *)tableView willDisplayCell:(CustomCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if (cell.blueCircle) cell.blueCircle = nil;
if (cell.greenRect) cell.greenRect = nil;
if (indexPath.row % 2 == 0){
NSLog(@"Even indexPath: %@", indexPath);
//some of the code not shown here creates a blue circle
[cell addSubview:cell.blueCircle];
}
else {
NSLog(@"Odd indexPath: %@", indexPath);
//some of the code not shown here creates a green rectangle
[cell addSubview:cell.greenRect];
}
}
Обратите внимание, что я получаю только один NSLog, либо нечетное или даже один, так почему я получаю две формы вместо того, чтобы только один?
У меня такое ощущение, что одна из фигур каким-то образом переносится (не уверен, как это работает) из предыдущей ячейки в новую ячейку, прежде чем это сообщение будет вызвано, но у меня есть ленивая «нилизация» до бороться с этим.
Что вы думаете об этом?
Это потрясающе, у меня было ощущение, что это что-то вроде этого. Я просто не понял, что именно. Это объяснение было действительно полезно для iOSer в первый раз, как и я. :) Однако решение rdelmar лучше, чем ваше. Поэтому я не уверен, кому я должен дать печенье с шоколадным чипом (галочкой)? @Andrew – GangstaGraham
Я решил выбрать вас как победителя, но я дал вам обоим – GangstaGraham