根据UICollectionView Cell更改UINavigationbar标题

时间:2015-08-19 15:34:30

标签: ios swift uicollectionview

我试图根据UINavigationbar单元格UICollectionView更改indexPath.row标题的标题,我有水平UICollectionView单元格,如照片滑动内容(在IOS中作为照片应用) )。

我想要实现的是当我从indexPath.row移动时,例如从1更改为2来更改标题,但我有一个问题,我已将以下代码放在cellforitematindexpathwilldisplaycell

self.title = "\(indexPath.row+1) of 2"

此代码工作正常,但它有一个问题,这是当我开始拖动到下一个单元格,但我回到我在哪里,标题更改为2但我仍然在1!这真烦人!

我还尝试将代码放在scrollViewDidEndDecelerating中,但它有同样的问题,比如我开始拖动但是我改变主意留在单元格1上,所以方法说okey拖尾,然后标题再次变为2,但我仍然在一个。

我需要,因为如果我仍然在哪里,那么我不必更改标题,如果我完全在下一个单元格中,则更改标题。

1 个答案:

答案 0 :(得分:2)

之所以发生这种情况,是因为方法cellForItemAtIndexPath被调用来准备第二项,但第一个单元格仍在内存中,当您返回第一个时,方法cellForItemAtIndexPath未被调用。 试试这个:

-(void)scrollViewDidEndDecelerating:(nonnull UIScrollView *)scrollView {
        float currentPage = self.collectionView.contentOffset.x / self.collectionView.frame.size.width;
        NSLog(@"Current page: %f", ceil(currentPage));
}

不要忘记在CollectionViewController.h中添加UIScrollViewDelegate