2016-06-14 8 views
1

Используя метод willDisplayCell я получил индекс последней видимой клетки:Выделите одну ячейку в то время, в коллекции View

- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath {  
    indexVisibleCell = [indexPath indexAtPosition:[indexPath length] - 1]; 
} 

где indexVisibleCell является NSUInteger, который объявлен в интерфейсе класса. Моя проблема в том, что я хочу переместить только одну ячейку, когда пользователь нажимает на правую или левую кнопку. Я применил этот код для этой цели:

- (IBAction)rightButton:(id)sender { 
    NSUInteger indexOfScrolledCell; 
    indexOfScrolledCell = indexVisibleCell; 

    if (indexVisibleCell < 9) {    
     NSIndexPath *path = [NSIndexPath indexPathForRow:indexOfScrolledCell+1 inSection:0]; 

     [self.obj_CollectionView1 scrollToItemAtIndexPath:path atScrollPosition:UICollectionViewScrollPositionLeft animated:YES];    
    }  
} 

как я покажу 3 ячейки за раз. Используя этот метод действий rightButton, он сдвигает 3 ячейки за раз, а не один. Пожалуйста, помогите мне разобраться, как прокручивать одну ячейку вовремя.

+0

установить 'pagingEnabled' на' YES' для 'UICollectionView'. Либо в IB, либо в Code. – viral

+0

с включенным пейджингом, его просмотр коллекции (с тремя ячейками, показанных за раз) будет прокручивать каждые 3 ячейки, что не является его желательной ячейкой за один раз –

ответ

1

Используйте visibleCells, чтобы получить свои видимые ячейки, получить крайний левый индекс клеток, чтобы выяснить следующий индекс, затем перейдите к этой ячейке слева (аналогичной логики в код).
willDisplayCell не является надежным, так как он называется оба раза, когда вы прокручиваете влево/вправо, и вы думаете, что индекс слева/справа больше не подходит.

Редактировать:
Или вам нужно правильно сравнить индекс в willDisplayCell, чтобы получить правильный указатель влево/вправо, основываясь на вашей логике.

3

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

[yourCollectionView setPagingEnabled:YES]; 
+1

с включенным пейджинговым просмотром (с тремя ячейками, показанными за раз) будет прокручивать каждые 3 ячейки, что не является желаемой 1 ячейкой за раз –

0

Для правой кнопки вы можете использовать следующие

[self.obj_CollectionView1 scrollToItemAtIndexPath:path atScrollPosition:UICollectionViewScrollPositionRight animated:YES]; 

и для левой кнопки следующего

[self.obj_CollectionView1 scrollToItemAtIndexPath:path atScrollPosition:UICollectionViewScrollPositionLeft animated:YES]; 

Я меняющийся UICollectionViewScrollPosition так, что при прокрутке направо нового элемента появляется на правой стороне коллекции просмотра, и когда вы пролистаете налево, новые элементы отображаются в левой части просмотра коллекции.

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