【发布时间】: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 的替代方法,因为假设用户没有选择任何项目......所以这段代码不会工作....
【问题讨论】:
-
您可以使用集合视图的
contentOffset属性吗? (如果没有,你能解释一下为什么这对你不起作用吗?) -
嗯,
contentOffset?这个属性是做什么的?你能给我看一个代码示例吗?
标签: xcode swift uicollectionview