Метод Swift collectionView не изменен для видимой ячейки - PullRequest
0 голосов
/ 05 июля 2018

У меня есть UICollectionView, в котором есть смещенная ячейка, показывающая пользователю, что есть что прокручивать. Проблема заключается в том, что в смещенной ячейке должен быть замок с альфа-значением 1. Это работает, когда я прокручиваюсь, когда ячейка используется повторно и проверка выполняется.

Метод внутренней проверки купленных курсов не вызывается в ячейке смещения при начальной загрузке.

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

if let purchased = purchasedCourses {
        if !purchased.contains(courses[indexPath.row].type) {
            print("CELL: \(indexPath.row)")
            cell.padlock.alpha = 1
        }
    }
...
}

Есть ли способ решить эту проблему?

Я пробовал: layoutIfNeeded(), setNeedsLayout() reloadItems()

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Вы можете попробовать

if !purchased.contains(courses[indexPath.row].type) {
        print("CELL: \(indexPath.row)")
        cell.padlock.alpha = 1
     }
     else {

         cell.padlock.alpha = 0
}

ИЛИ

 cell.padlock.alpha = purchased.contains(courses[indexPath.row].type ? 0 : 1
0 голосов
/ 05 июля 2018

поставить else предложение после if предложения и установить поведение ячейки по умолчанию в else части. Здесь ячейка используется повторно, поэтому, когда ваше условие if становится истинным, все остальные ячейки получат то же свойство, что и вы не предоставили else, чтобы получить ячейку в случае по умолчанию.

if !purchased.contains(courses[indexPath.row].type) {
        print("CELL: \(indexPath.row)")
        cell.padlock.alpha = 1
}else {
    cell.padloack.alpha = //your default value of alpha
}
...