2014-01-28 4 views
5

Я разбил на страницу collection view в горизонтальном направлении, используя следующий код.Не удалось получить текущую страницу UICollectionView

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.collectionView.pagingEnabled = YES; 
    self.collectionView.directionalLockEnabled = YES; 
    self.collectionView.bounces = NO; 
    self.collectionView.showsHorizontalScrollIndicator = NO; 
    self.collectionView.delegate = self; 

    [self setup]; 

    self.pageControl.currentPage = 0; 

    self.pageControl.numberOfPages = floor(self.collectionView.contentSize.width/ self.collectionView.frame.size.width) + 1; 
} 

Я использую pageControl, чтобы указать, сколько страниц у меня есть и текущая страница.

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

iOS6 UICollectionView and UIPageControl - How to get visible cell?

UICollectionView: current index path for page control

В следующем.

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { 
    NSInteger currentPage = self.collectionView.contentOffset.x/self.collectionView.frame.size.width; 
    self.pageControl.currentPage = currentPage; 
} 

Однако, это не сработало. Когда я прокручиваю collection view на следующую страницу, pageControl все еще указывает на самую первую страницу. Он не меняет свою ценность.

Я распечатал значение self.collectionView.contentOffset.x, оно всегда находится внутри рамки (это первая страница, даже я перешел на следующую страницу), она никогда не переходит на следующую страницу.

Я сделал что-то не так?

ответ

5

Вы считаете расстояние между ячейками?

Попробуйте это:

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { 
    float currentPage = self.collectionView.contentOffset.x/self.collectionView.frame.size.width; 
    self.pageControl.currentPage = ceil(currentPage); 

    NSLog(@"Values: %f %f %f", self.collectionView.contentOffset.x, self.collectionView.frame.size.width, ceil(currentIndex)); 
} 
Смежные вопросы