我创建了一个水平的UICollectionView来显示这12个月,我需要用户选择其中的一个,以便使用collectionCell.isUserInteractionEnabled=true
和UITapGestureRecognizer
,但这会返回整个页面。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let collectionCell = collectionView.dequeueReusableCell(withReuseIdentifier: "monthCollectionView", for: indexPath as IndexPath) as! AttendenceCollectionViewCell
collectionCell.collectionViewCellLabel.text=monthArray[indexPath.item]
collectionCell.backgroundColor = UIColor.clear
collectionCell.isUserInteractionEnabled=true
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(customMonth(month:tap:)))
collectionCell.collectionViewCellLabel.addGestureRecognizer(tapGesture)
collectionCell.collectionViewCellLabel.isEnabled=true
collectionCell.isExclusiveTouch=true
customMonth(month:monthArray[indexPath.item],tap: tapGesture)
return collectionCell
}
@objc func customMonth(month:String,tap:UITapGestureRecognizer){
print("\n",month,"\n")
输出:
八月
9月
十月
11月
十二月
4月
3月
二月
1月
答案 0 :(得分:0)
您实际上应该使用collectionView的委托方法didSelectItemAt()
,而不要使用手势识别器。
答案 1 :(得分:0)
在探索的过程中,我发现我们可以使用
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
用于在UICollectionView中选择项目
它是这样实现的:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let selectedMonth=monthArray[indexPath.item]
collectionView.cellForItem(at: indexPath)
print("\n\n",selectedMonth)
}