我有一個水平的按鈕集合視圖。當他們中的一個被點擊時,用戶被帶到另一個視圖控制器。通常情況下,並非所有按鈕都可見,所以我希望所選按鈕位於集合視圖的最左側。ScrollToItem工作不正常
我試圖用scrollToItem函數做到這一點。問題是,它每次都一直向右滾動收集視圖。
相關代碼:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return labelArray.count
}
//frees up the collection view when the scroll is active
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
isScrolling = true
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
//possible problem
if isScrolling == false {
collectionView.scrollToItem(at: indexPath, at: UICollectionViewScrollPosition.left, animated: false)
}
let myLabel = cell.viewWithTag(1) as! UILabel
let myArray = labelArray[indexPath.row]
myLabel.text = labelArray[indexPath.row]
myLabel.textColor = UIColor.white
if myArray == labelArray[1] {
cell.backgroundColor = UIColor.black
} else {
cell.backgroundColor = UIColor(red: 56/255, green: 120/255, blue: 195/255, alpha: 1)
}
return cell
}
任何幫助將不勝感激。
所以我嘗試在didSelectItemAt方法中實現這一點。它確實阻止了收集視圖從開始滾動到右側,問題在於它沒有對它做任何事情。 –
我測試了上面的代碼,請參閱編輯,在我構建的簡單集合視圖應用程序中工作。沒有看到你是如何實現didSelectItemAt方法或類中的其他代碼的,我不確定你的問題在哪裏。 – bjd23
我知道它在cellForItemAt方法中工作。只需要硬編碼項目索引。我會發布答案。謝謝你的幫助。 –