Ios 根据UICollectionView单元格更改UINavigationbar标题
我试图根据Ios 根据UICollectionView单元格更改UINavigationbar标题,ios,swift,uicollectionview,Ios,Swift,Uicollectionview,我试图根据UICollectionView单元格indexPath.row更改UINavigationbar标题,我有水平UICollectionView单元格,如照片滑动内容(如IOS中的照片应用程序) 我试图实现的是,当我从indexPath.row(例如从1移动到2)更改标题时,但我遇到了一个问题,我将以下代码放置在cellforitematindexpath或willdisplaycell中: self.title = "\(indexPath.row+1) of 2" 这段代码工作正
UICollectionView
单元格indexPath.row
更改UINavigationbar
标题,我有水平UICollectionView
单元格,如照片滑动内容(如IOS中的照片应用程序)
我试图实现的是,当我从indexPath.row(例如从1移动到2)更改标题时,但我遇到了一个问题,我将以下代码放置在cellforitematindexpath
或willdisplaycell
中:
self.title = "\(indexPath.row+1) of 2"
这段代码工作正常,但它有一个问题,那就是当我开始拖动到下一个单元格,但我返回到我在哪里,标题更改为2,但我仍然在1中!真烦人
我也尝试过将代码放在ScrollViewDiEndDecelling
中,但它也有同样的问题,比如我开始拖动,但我改变主意留在单元格1,所以方法说OK结束拖动,然后标题再次更改为2,但我仍然在1中
我需要这样做,因为如果我仍然在我所在的位置,那么我就不必更改标题,如果我完全在下一个单元格中,那么就更改标题。这是因为调用了方法
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中添加
UIScrollViewDelegate
。h最好将代码放在ScrollViewDiEndDecelling
中,它可以工作!