我试图根据UINavigationbar
单元格UICollectionView
更改indexPath.row
标题的标题,我有水平UICollectionView
单元格,如照片滑动内容(在IOS中作为照片应用) )。
我想要实现的是当我从indexPath.row移动时,例如从1更改为2来更改标题,但我有一个问题,我已将以下代码放在cellforitematindexpath
或willdisplaycell
:
self.title = "\(indexPath.row+1) of 2"
此代码工作正常,但它有一个问题,这是当我开始拖动到下一个单元格,但我回到我在哪里,标题更改为2但我仍然在1!这真烦人!
我还尝试将代码放在scrollViewDidEndDecelerating
中,但它有同样的问题,比如我开始拖动但是我改变主意留在单元格1上,所以方法说okey拖尾,然后标题再次变为2,但我仍然在一个。
我需要,因为如果我仍然在哪里,那么我不必更改标题,如果我完全在下一个单元格中,则更改标题。
答案 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