2013-09-09 2 views
0

Я использую представление коллекции для отображения «карточек». Когда пользователь нажимает на одну из этих карт, вид изменяется с помощью флип-анимации (с другой стороны - через функцию, вызванную в didSelectItemAtIndexPath). Если пользователь касается другой из этих карт, они могут щелкнуть другую, а старая карта вернется к старому виду, и новая карта перевернется в новое представление. Кроме того, они могут снова щелкнуть оригинальную карту и откинуть ее назад.Проблемы с прокруткой UICollectionView

Проблема

Это прекрасно работает для того, что, когда прокрутка карты в окне прокрутки другие карты появляются быть перевернуто кроме. Например, я переворачиваю первую карту в виде коллекции (индекс: 0). Это легко меняется. Я прокручиваю вниз, и ячейка индекса 9 появляется щелчком.

То, что я пытался

Я посмотрел вокруг, и хотя я вижу много вопросов, чтобы сделать с UICollectionView и прокрутке, я не могу понять, Что же и то, что это не так. Я также использовал NSLog, чтобы определить, были ли выбраны случайно перевернутые карты просмотра и перевернуты через программу, и они не имеют. Они просто кажутся.

Я действительно застрял в идеях с этим. У кого-нибудь есть идеи? Это из-за способа создания ячеек? В моей viewDidLoad я использую: (где cellImage мой собственный класс для клеток)

[self.collectionView registerClass:[cellImage class] forCellWithReuseIdentifier:@"MY_CELL"]; 

и в моем cellForItemAtIndexPath:

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath; { 
cellImage *cell = [cv dequeueReusableCellWithReuseIdentifier:@"MY_CELL" forIndexPath:indexPath]; 
cell.imageView.image = [UIImage imageNamed:[imageArray objectAtIndex:indexPath.item]]; 
[cell.label addSubview:cell.imageView]; 
cell.label.backgroundColor = [UIColor whiteColor]; 
cell.label.layer.borderColor = [UIColor grayColor].CGColor; 
cell.label.layer.borderWidth = 1.0f; 

return cell; 
} 

ли кто-нибудь есть какие-нибудь идеи? Если вам нужен еще один код, просто дай мне крик, спасибо!

ответ

1

В способе настройки вашей ячейки многократного использования (cellForItemAtIndexPath) у вас должно быть явно установить оба состояния. В противном случае переработанная ячейка не будет обновляться сама.

image = isFlipped ? backImage : cardImage; 

У вас должна быть модель данных, которая может надежно вернуть текущее состояние с переворачиванием любой карты в вашем массиве.

+0

Я создал массив перевернутых состояний и реализовал свой метод в моем cellForItemAtIndexPath и установил оба состояния через перевернутое состояние в indexPath.row и до сих пор не повезло. Я продолжаю пытаться. (я, наверное, сделал что-то глупое!). Спасибо за ваше предложение. –

0

Вы можете переопределить метод - (void)prepareForReuse вашего пользовательского UICollectionViewCell, чтобы вернуть ячейку в состояние по умолчанию, прежде чем повторно использовать ее.

Смежные вопросы