Xcode UICollectionView滚动至索引处的项目

Xcode UICollectionView滚动至索引处的项目,xcode,swift,uicollectionview,Xcode,Swift,Uicollectionview,我已成功在索引处滚动项目,例如,如果用户点击按钮,它将转到最后一个项目 这是我使用的代码 self.collection.scrollToItemAtIndexPath(NSIndexPath(forItem: self.array.count - 1, inSection: 0), atScrollPosition: UICollectionViewScrollPosition.Top, animated: true) 但是我的问题是如何知道用户是在UICollectionView的底部

我已成功在索引处滚动项目,例如,如果用户点击按钮,它将转到最后一个项目

这是我使用的代码

 self.collection.scrollToItemAtIndexPath(NSIndexPath(forItem: self.array.count - 1, inSection: 0), atScrollPosition: UICollectionViewScrollPosition.Top, animated: true) 
但是我的问题是如何知道用户是在
UICollectionView
的底部还是顶部?

我可以通过创建两个函数来实现这一点,如果用户点击顶部的
ui按钮,它就会上升,反之亦然

但我只想用一个
ui按钮来实现这一点。因此,如果用户按下按钮,代码应该知道用户是否在底部,是否向上,反之亦然。
我在
UICollectionView
中查看了每个函数,但似乎没有
返回用户所处的项目

我想到了逻辑上可能是正确的东西,比如这个

var someBool: Bool!

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
 let tempIndex: Int = self.array.count / 2 

 if indexPath.row > tempIndex{
   someBool = true // UP
 } else {
  someBool = false // Down
 }
 ...
}

@IBAction func buttonPressed{
   if someBool{
     self.collection.scrollToItemAtIndexPath(NSIndexPath(forItem: 0, inSection: 0), atScrollPosition: UICollectionViewScrollPosition.Top, animated: true) 
   } else {
     self.collection.scrollToItemAtIndexPath(NSIndexPath(forItem: self.array.count - 1, inSection: 0), atScrollPosition: UICollectionViewScrollPosition.Top, animated: true) 
   }
}
这意味着我们假设一个数组有9个元素/2=4(INT),因此如果用户选择项9,9>4 true向上或向下


我相信这段代码只有在用户选择一个项目时才能正常工作,但我需要一种不使用
indexPath.row
的替代方法,因为假设用户没有选择任何项目。。。因此,如果您支持的是iOS 8.0,那么此代码将不起作用

optional func collectionView(_ collectionView: UICollectionView,
             willDisplayCell cell: UICollectionViewCell,
          forItemAtIndexPath indexPath: NSIndexPath)

这个新的API已被完全使用,因此您的代码将得到完美的处理。只需将代码从
didSelectItemAtIndexPath
移动到此方法,因为它每次都会调用,并在此处检查
indexath.row
。如果有帮助,请告诉我。

您可以使用集合视图的
contentOffset
属性吗?(如果没有,你能解释一下为什么这对你不起作用吗?)嗯,
contentOffset
?这房子做什么?你能给我看一个代码示例吗?参见和