根据UICollectionView Cell改变UINavigationbar的标题



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

我想要实现的是当我从indexPath移动。行,例如从1到2改变标题,但我有一个问题,我把以下代码在cellforitematindexpathwilldisplaycell:

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

这段代码工作得很好,但它有一个问题,这是当我开始拖到下一个单元格,但我回到我在哪里,标题改为2,但我仍然在1 !这真的很烦人!

我也试过把代码在scrollViewDidEndDecelerating,但它有同样的问题,就像我开始拖动,但我改变了主意,留在单元格1上,所以方法说,好的,它的结束拖动,然后标题再次更改为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

最新更新