微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 UICollectionview 中选择任何其他单元格时取消选择默认选定单元格

如何解决在 UICollectionview 中选择任何其他单元格时取消选择默认选定单元格

使用 UICollectionView 显示日历,我认选择了今天的日期,并希望在选择任何其他日期时取消选择该日期。下面是我的代码

func collectionView(_ collectionView: UICollectionView,cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CalenderCell",for: indexPath) as! CalenderCollectionViewCell
    
    cell.lblDayName.text = arrCalendarDays[indexPath.item]
    cell.lblDate.text = arrCalendarOnlyDate[indexPath.item]
    
    if indexPath.item == 0 {
        if !isTodayDate {
        cell.isSelected = true
        } else {
            cell.isSelected = false
        }
    }
    
    return cell
}

func collectionView(_ collectionView: UICollectionView,didSelectItemAt indexPath: IndexPath) {
    isTodayDate = true

// Tried below code but not working
   /* collectionViewWeekCalendar.indexPathsForSelectedItems?
        .forEach {
            self.collectionViewWeekCalendar.deselectItem(at: $0,animated: false) }
    */
    let selectedCell:UICollectionViewCell = collectionViewWeekCalendar.cellForItem(at: indexPath)!
    selectedCell.isSelected = true
}

func collectionView(_ collectionView: UICollectionView,diddeselectItemAt indexPath: IndexPath) {
    let selectedCell:UICollectionViewCell = collectionViewWeekCalendar.cellForItem(at: indexPath as IndexPath)!
    selectedCell.isSelected = false
}

enter image description here

问题是,在选择任何其他日期时,今天的选定日期不会取消选择。请指导。

解决方法

最简单的方法(我认为) 使用选定的索引

func collectionView(_ collectionView: UICollectionView,cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

  let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CalenderCell",for: indexPath) as! CalenderCollectionViewCell

  cell.lblDayName.text = arrCalendarDays[indexPath.item]
  cell.lblDate.text = arrCalendarOnlyDate[indexPath.item]

  if sellectedIndex == indexPath {
    cell.isSelected = true
  } else {
    cell.isSelected = false
  }

  return cell 
}

func collectionView(_ collectionView: UICollectionView,didSelectItemAt indexPath: IndexPath) {
    selectedIndex = indexPath
    collectionView.reloadData()
}

在开始时,

set selectedIndex = today date Index

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?