【发布时间】:2019-10-22 09:46:56
【问题描述】:
我正在尝试在任何给定时间选择并突出显示集合视图中可见单元格的中间单元格。有问题的集合视图显示前后六个月的天数。
我尝试过使用滚动视图委托和集合视图委托。但所有的工作都是在didSelectItem() 集合视图委托中选择并突出显示代码。
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print("delegate called")
collectionView.scrollToItem(at: indexPath, at: .centeredHorizontally, animated: true)
collectionView.cellForItem(at: indexPath)?.backgroundColor = UIColor.highlightCellGreen()
if let cell = collectionView.cellForItem(at: indexPath) as? ClientListDateCollectionViewCell{
monthLabel.text = cell.monthName
monthLabel.text = monthLabel.text?.capitalized
}
我尝试在使用viewDidScroll() 委托滚动时选择中间单元格。但是,我无法获得我想要的输出。
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let visibleCellCount = dateCollectionView.indexPathsForVisibleItems.count
let cellCount = dateCollectionView.visibleCells.count
let visibleCells = dateCollectionView.indexPathsForVisibleItems[visibleCellCount-1/2]
if visibleCellCount>0{
let middle = visibleCellCount/2
let midValue = dateCollectionView.indexPathsForVisibleItems[middle]
dateCollectionView.selectItem(at: midValue, animated: true, scrollPosition: .centeredHorizontally)
}
如何选择中间单元格?
编辑1:集合视图从最左边开始,然后滚动到中间,即今天的日期
【问题讨论】:
-
let middle = visibleCellCount/2这是什么!!! -
没那么简单
-
@SPatel 我很乐意学习如何正确地做到这一点。我刚开始用swift。请帮助我了解它应该如何完成
-
我不明白你为什么要这样做?有截图吗?
-
@Nullable 我正在尝试使用显示日期的集合视图和集合下方的标签显示所选日期的当前月份的日期选择器