Я не совсем уверен, как задать этот вопрос, но вот код, который я считаю важным ... все подключено и работает (я оставил другой код дизайна в ячейке, чтобы сделать вопрос более читабельным)
в первом фрагменте кода У меня есть пользовательская ячейка, которая по умолчанию задает значение переменной inCurrentMonth, равное False
class DateCollectionViewCell: UICollectionViewCell {
public var inCurrentMonth: Bool!
required init?(coder aDecoder: NSCoder) {
super.init(coder:aDecoder)
//You Code here
inCurrentMonth = false
}
}
в приведенном ниже фрагменте кода, который я печатаюпеременная inCurrentMonth для каждой ячейки - ЭТО ВСЕГДА ПЕЧАТАЕТ ЛОЖЬ
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Calendar", for: indexPath) as! DateCollectionViewCell
print(cell.inCurrentMonth)
}
последний фрагмент кода показывает представление коллекции, обновляющее переменную "inCurrentMonth" каждой ячейки при снятии с очереди.Если я распечатаю ячейки перед тем, как вернуть их, они явно имеют правильное значение для incurrentmonth.Когда, черт возьми, эта информация возвращается к ложному значению, несмотря ни на что ??
edit: значение для текста на этикетках корректно отображается в представлении коллекции при обновлении при удалении из очереди
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Calendar", for: indexPath) as! DateCollectionViewCell
switch Direction {
case 0:
if indexPath.row < DaysInMonths[month] + NumberOfEmptyBox{
cell.DateLabel.text = "\(indexPath.row + 1 - NumberOfEmptyBox)"
cell.inCurrentMonth = true
} else {
cell.DateLabel.text = "\(indexPath.row - DaysInMonths[month] - NumberOfEmptyBox + 1)"
cell.DateLabel.textColor = UIColor.lightGray
cell.inCurrentMonth = false
}
case 1:
if indexPath.row < DaysInMonths[month] + NextNumberOfEmptyBox{
cell.DateLabel.text = "\(indexPath.row + 1 - NextNumberOfEmptyBox)"
?????????????THIS DOES WORK?????????????
cell.inCurrentMonth = true
} else {
!!!!!!!!!!!!!THIS DOES NOT WORK!!!!!!!!!!!!!!!
cell.DateLabel.text = "\(indexPath.row - DaysInMonths[month] - NextNumberOfEmptyBox + 1)"
cell.DateLabel.textColor = UIColor.lightGray
cell.inCurrentMonth = false
}
case -1:
if indexPath.row < DaysInMonths[month] + PreviousNumberOfEmptyBox{
?????????????THIS DOES WORK?????????????
cell.DateLabel.text = "\(indexPath.row + 1 - PreviousNumberOfEmptyBox)"
!!!!!!!!!!!!!THIS DOES NOT WORK!!!!!!!!!!!!!!!
cell.inCurrentMonth = true
} else {
cell.DateLabel.text = "\(indexPath.row - DaysInMonths[month] - PreviousNumberOfEmptyBox + 1)"
cell.DateLabel.textColor = UIColor.lightGray
cell.inCurrentMonth = false
}
default:
fatalError()
}
if Int(cell.DateLabel.text!)! < 1 { //here we hide the negative numbers or zero
var previousMonth: Int = month-1
if previousMonth == -1 {
previousMonth = 11
}
let previousDay: Int = DaysInMonths[previousMonth] - NumberOfEmptyBox + (indexPath.row) + 1
cell.DateLabel.text = "\(previousDay)"
cell.DateLabel.textColor = UIColor.lightGray
cell.inCurrentMonth = false
}