【问题标题】:UICollectionView scroll to item at IndexUICollectionView 滚动到索引处的项目
【发布时间】:2015-06-30 20:40:45
【问题描述】:

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

这是我用过的代码

 self.collection.scrollToItemAtIndexPath(NSIndexPath(forItem: self.array.count - 1, inSection: 0), atScrollPosition: UICollectionViewScrollPosition.Top, animated: true) 

但我的问题是如何知道用户是在UICollectionView 的底部还是顶部?

我可以通过创建 2 个函数来做到这一点,如果用户点击 TOP UIButton 它会上升,反之亦然...

但我只想用一个UIButton 来做这件事。因此,如果用户按下按钮,代码应该知道用户是否在底部并上升,反之亦然。 我查看了UICollectionView 的每个功能,但似乎没有return 用户在哪个项目上。

我想到了一些逻辑上可能是正确的事情

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 的替代方法,因为假设用户没有选择任何项目......所以这段代码不会工作....

【问题讨论】:

标签: xcode swift uicollectionview


【解决方案1】:

如果您支持 iOS 8.0

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多