Прежде всего, почему вы используете жест касания, когда вы можете использовать делегат представления коллекции для этого метода делегата didSelectItem.
Я предполагаю, что вы этого не знаете, поэтому я прилагаю пример для этого
func collectionView(UICollectionView, didSelectItemAt: IndexPath)
здесь, в этой функции, вы можете получить касание самой collectionviewcell.
Теперь к вашей проблеме вам необходимо поддерживать класс модели, который поможет вам сохраниться. ваши данные.
Пример -
struct CategoryModel {
var categoryName : String
var isCategorySelected : Bool //or you can use your enum here
}
в вашем v c инициализировать этот массив моделей, предполагая, что
var dataModels : [CategoryModel] // you fill it
теперь в вашем cellforItemAt
управлять выбранным и невыбранным состоянием вашей ячейки
например
if dataModels[indexPath.item].isCategorySelected == true {
//manage selected cell state
}else {
//manage unselected cell state
}
func collectionView(UICollectionView, didSelectItemAt: IndexPath) {
dataModels[indexPath.item].isCategorySelected = !dataModels[indexPath.item].isCategorySelected //change your model data here according to the tap
// now reload your cell here for that specific indexpath
}