Я хочу, чтобы цвет первой выбранной ячейки в моем представлении коллекции соответствовал первому цвету в массиве, следующей выбранной ячейке соответствовал второму цвету в массиве и т. Д. Что означает, что у меня есть массив
let colorArray:[UIColor] = [UIColor.blue, UIColor.green, UIColor.red]
Я хочу, чтобы первая выделенная ячейка была синей, затем зеленой, следующей красной. Если я откажусь от выбора двух из трех ячеек, они больше не будут окрашены, и следующая выделенная ячейка будет зеленой.
Я знаю, что есть множество способов сделать это, но я устанавливаю цвет фона через настройку свойства isHighlighted в ячейке, поэтому мне нужно, чтобы цвет передавался в ячейку, прежде чем выделенное свойство будет задавать. Метод didSelectItemAt вызывается после того, как свойство установлено, поэтому оно не работает.
override var isHighlighted: Bool {
didSet {
if isHighlighted {
//set background color here
}
Было бы лучше, если бы существовал сопоставимый метод для willSelectAtPath, как с ячейками табличного вида, но все, что я нашел, это shouldSelectItemAt, и он не вызывается до того, как установлено выделенное свойство.
Прямо сейчас я перебираю все видимые ячейки и устанавливаю их текущее свойство цвета на текущий активный цвет, но это кажется громоздким.