0

У меня есть UIImageView (позволяет называть его myImageView) в UICollectionViewCell с его голыми необходимыми ограничениями. Я использую раскадровки и соединяя взгляды и код с viewWithTag.Невозможно скрыть или удалить виды в UICollectionViewCell при использовании Autolayout

В cellForItemAtIndexPath, есть условие, согласно которому, например:

if (1 + 1 == 2) 
    myImageView.hidden = YES; 
else 
    myImageView.hidden = NO 

Я поставил точки останова и проверить, что код был выполнен, но myImageView не получает скрытое для первой партии видимых ячеек (при условии, что все они выполнили условие).

Когда я прокручиваю вниз, чтобы показать новые (или повторно используемые) ячейки, все работает так, как ожидалось (ячейки, которые удовлетворяли условию и должны быть скрыты, скрыты, наоборот). Он также работает так, как ожидалось, когда я прокручиваю назад, чтобы снова открыть первую партию ячеек.

Проблема заключается только в первой партии видимых ячеек.

Я попробовал removeFromSuperview вместо того, чтобы скрывать камеры, но не повезло и там.

Есть ли подходящий способ или какие-либо рекомендации при работе с автозапуском и UICollectionViews в таких ситуациях?

+0

Является ли условие истинным до первого вызова 'cellForItemAtIndexPath'? Похоже, что это становится истинным после того, как первые ячейки уже были отображены, и вы не вызвали reloadData – Paulw11

+0

@ Paulw11 Я извлекаю данные через API. Получено из API - массив словарей, и условие, чтобы скрыть это изображение, находится в этом словаре. Я вызываю reloadData после того, как я успешно извлекаю данные из API. Независимо от того, изначально ли скрыто изображение или нет, оно должно обновляться соответствующим образом в соответствии с условием if else, поскольку я правильно рассмотрел оба случая? – Ryan

+0

Он должен. Есть ли конкретная причина, по которой вы используете теги представления вместо пользовательского класса ячеек с IBOutlets? – Paulw11

ответ

0

Поскольку мы не можем установить теги на ограничения, у нас нет выбора, кроме как подкласса UICollectionViewCell и связать ограничение с IBOutlet.

Затем в cellForRowAtIndexPath:

cell.imageViewHeightConstraint.constant = imageViewShouldHide ? 0 : cell.imageView.image.size.height; 

Проще говоря, переключить ограничение высоты зрения между п значением & , а не скрыты между ДА & НЕТ.

Приняв автозапуск, я узнал, что мы должны перестать думать о кадрах и исправлениях, но я не был уверен в скрытии просмотров. Спасибо за подсказку @ Paulw11!

Смежные вопросы