Сброс UICollectionView на изменение ячейки - PullRequest
0 голосов
/ 06 мая 2018

Я работаю над приложением для викторины на основе этого урока . Учебное пособие предполагает, что все вопросы содержат изображение. Однако для моего случая не все вопросы содержат изображение. Поэтому я изменил QuizCVCell.swift , как показано ниже. если imgName пусто, изображение не будет установлено. Кроме того, btn1 будет размещен непосредственно под lblQue, если изображение отсутствует. Если изображение есть, btn1 будет размещено под изображением.

guard let unwrappedQue = question else { return }
lblQue.text = unwrappedQue.questionText
btn1.setTitle(unwrappedQue.options[0], for: .normal)
btn2.setTitle(unwrappedQue.options[1], for: .normal)
btn3.setTitle(unwrappedQue.options[2], for: .normal)
btn4.setTitle(unwrappedQue.options[3], for: .normal)

if unwrappedQue.imgName.isEmpty {
    btn1.topAnchor.constraint(equalTo: lblQue.bottomAnchor, constant: 10).isActive=true
} else {
    imgView.image = UIImage(named: unwrappedQue.imgName)
    btn1.topAnchor.constraint(equalTo: imgView.bottomAnchor, constant: 10).isActive=true
}

Это работает нормально, но проблема возникает, когда я нажимаю "Далее", чтобы перейти к следующему вопросу. Если текущий вопрос не содержит изображения, но в следующем вопросе есть изображение, то изображение в следующем вопросе не будет отображаться при смене ячейки. Как это решить? Мне нужно сбросить UICollectionView при смене ячейки?

1 Ответ

0 голосов
/ 06 мая 2018

Каждый раз, когда вы используете constraint, вы добавляете новый NSLayoutConstraint -объект. После повторного использования ячеек они начинают конфликтовать друг с другом.

Вы должны создать все ограничения один раз в awakeFromNib -методе и сохранить его ссылки. Затем просто измените isActive свойства в соответствии с приоритетом изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...