Мои ячейки создаются на основе timeSlotArray
, в котором хранятся все временные интервалы времени открытия с шагом 30 минут, но их цвет зависит от того, равен ли их идентификатор любому из идентификаторов записей bookedTimeSlotsArray
.Если я выберу день, у которого есть заказы, он получит правильный цвет ячеек, но ячейки сохранят этот цвет при перезагрузке данных, даже если я перейду на дату с другими бронированиями.
Функция:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "timeSlotCell", for: indexPath) as! TimeSlotCollectionViewCell
// Configure the cell
cell.timeLabel.text = timeSlotArray[indexPath.row]
cell.cellId = Int("\(String(describing: self.selectedDate))" + self.timeStringToStringConvert(timeSlotArray[indexPath.row]))
if bookedTimeSlotsArray.count > 0 {
for index in 0...bookedTimeSlotsArray.count - 1 {
let bookingId = bookedTimeSlotsArray[index].bookingId
if cell.cellId == bookingId {
print(" match found")
print("Index is: \(index)")
print("cell time is: \(timeSlotArray[indexPath.row])")
print("time slot cell id is: \(String(describing: cell.cellId))")
print("booking id: \(bookingId)")
cell.backgroundColor = UIColor.red.withAlphaComponent(0.3)
} else {
cell.backgroundColor = UIColor.green.withAlphaComponent(0.8)
}
}
}
return cell
}
Я перезагружаю данные представления коллекции в 2 функциях, calculateOpenTimeSlots()
и calculateBookedTimeSlots()
, и они вызываются так: 1-й случай: в viewDidLoad()
Я вызываю обе функции, 2-й случай: в Firebase
наблюдательФункция, которую я вызываю только calculateBookedTimeSlots()
, 3-й случай: при смене дня из выбора ячейки табличного представления я вызываю только calculateOpenTimeSlots()
в didSelectRowAt
.1-й и 3-й случаи работают, как и ожидалось, но 2-й не так, как описано в начале вопроса.Ребята, вы можете увидеть, где я бью стенуБольшое спасибо, как обычно.
РЕДАКТИРОВАТЬ:
Я добавил prepareForReuse
в класс своей ячейки, но я все еще получаю то же поведение, когда представление коллекции рисует ячейки.Вот класс клеток:
import UIKit
class TimeSlotCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var timeLabel: UILabel!
var cellId: Int!
override func prepareForReuse() {
super.prepareForReuse()
// Set your default background color, title color etc
backgroundColor = UIColor.green.withAlphaComponent(0.8)
}
}