UICollectionView Неправильная ячейка Dequeue
Я видел несколько похожих вопросов, задаваемых здесь, но ни один из них не является точно таким же, и ни один не имеет рабочего ответа.
у меня есть UICollectionView
для отображения одного столбца ячеек, который прокручивается по вертикали. В cellForItemAtIndexPath
У меня есть метод, который создает ShapeType
основанный на indexPath.item
и затем передает его в ячейку, чтобы применить маску слоя этой формы. В результате все клетки образуют повторяющийся узор из форм.
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
ShapeCVCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kReuseIdentifier forIndexPath:indexPath];
Setting *setting = self.settings[indexPath.item];
cell.titleLabel.text = setting.title;
ShapeType shapeType = [self shapeTypeForIndex:indexPath.item];
[cell configureWithShapeType:shapeType];
return cell;
}
Этот код работает отлично, пока источник данных не станет достаточно большим для удаления очереди из ячеек. Все ячейки на экране при первом запуске идеальны, но как только пользователь начинает прокручивать, команды маски формы перемешиваются и больше не создают повторяющийся узор.
Я пытался обойти это, позвонив setNeedsDisplay
на клетках каждый раз, когда они сняты и играют с cell.autoresizingMask
, но это не решает проблему. Я даже пытался обойти dequeueReusableCellWithReuseIdentifier
инициализируя ячейки, а затем сохраняя их в изменяемом массиве, чтобы получить их позже, но я не могу заставить это работать без сбоя приложения. Кто-нибудь сделал что-то похожее на эту функцию?