只需双击即可取消选择collectionViewCell

时间:2017-10-07 21:38:11

标签: ios swift debugging uicollectionview

所以这里有解决问题的函数:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    guard let cell = calendarView.cellForItem(at: indexPath) as? CalendarCell else { return }

    if cell.isSelectable! {
        if selectedDates.filter({ $0.isDateSameDay(cell.currentDate)
        }).count == 0 {
            selectedDates.append(cell.currentDate)
            cell.selectCell(#colorLiteral(red: 0.721568644, green: 0.8862745166, blue: 0.5921568871, alpha: 1))
            selectTodayCell(cell: cell)
        } else {
            deselectCell(cell:cell)
            setTodayCellColor(cell: cell)
            print(selectedDates)
        }
    }
}

private func deselectCell(cell: CalendarCell) {
    selectedDates = selectedDates.filter() {
        return  !($0.isDateSameDay(cell.currentDate))
    }
    if cell.currentDate.isSaturday() || cell.currentDate.isSunday() {
        cell.deselectCell(#colorLiteral(red: 0, green: 0, blue: 0, alpha: 1))
    }
    else {
        cell.deselectCell(#colorLiteral(red: 0, green: 0, blue: 0, alpha: 1))
    }
}

非常简单的日期延长:

func isDateSameDay(_ date: Date) -> Bool {
    return (self.day() == date.day()) && (self.month() == date.month() && (self.year() == date.year()))
}

所以问题是取消选择已经选中的单元格。您只需按一次以选择单元格,然后两次取消选择它。 我试图让它成为一个选择,一个用于取消选择。 单元格类中的函数基本上只是更改标签textColor和背景颜色,因此发布它们没有任何意义。 我在整个项目中都没有任何手势识别器,我想知道过滤器功能是否对设备要求很高,是否会产生这个奇怪的错误?或者应该在异步块中调用deselectCell?

0 个答案:

没有答案