Вот вам направление, дайте мне знать, если вы не можете его реализовать:
У вас есть метод в файле ячейки, а затем переопределите isSelected
свойство UICollectionViewCell
, тогда, если isSelected = true
, вызовите ваш метод со значением параметра true, чтобы выбрать изображение переключателя, и если это false, вызовите ваш метод со значением параметра false, чтобы де выбрать изображение переключателя и соответственно обновить пользовательский интерфейс.
Затем В методе cellForRowAt
или в методе willDisplayCellAt
из UICollectionView
позже выберите первый элемент при первом запуске с методом selectItem(at:animated:scrollPosition:)
. Когда представление коллекции сначала инициализируется, оно покажет первый элемент как выбранный, а затем, когда вы выберете другую ячейку, обновит пользовательский интерфейс для всех ячеек соответственно, так как вы переопределили свойство isSelected
и вызовите там методы.
Как выбрать первый элемент при отображении ячеек (могут быть и другие способы сделать это):
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
if indexPath.row == 0 {
collectionView.selectItem(at: indexPath, animated: false, scrollPosition: .left)
}
}
Обратите внимание, что этот элемент будет выбран первым для всех разделов, это может вызвать проблемы если в вашем UICollectionView
имеется более 1 раздела или если вы уверены, что ваш collectionView
всегда будет иметь данные, доступные при загрузке представления, вы можете сделать следующее в viewDidLoad
:
let indexPath = IndexPath(row: 0, section: 0)
collectionView.selectItem(at: indexPath, animated: false, scrollPosition: .left)