From 276fbc8c1020dde67b9e8be1e019916f0ef19faf Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Wed, 3 Aug 2022 20:55:22 +0300 Subject: [PATCH] fix: excluding selected cells --- .../Helpers/UICollectionViewLayout+DefaultLayout.swift | 3 +-- .../Filters/ViewModels/DefaultFiltersViewModel.swift | 8 ++++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/TIUIElements/Sources/Filters/Helpers/UICollectionViewLayout+DefaultLayout.swift b/TIUIElements/Sources/Filters/Helpers/UICollectionViewLayout+DefaultLayout.swift index 6051f722..bca75cec 100644 --- a/TIUIElements/Sources/Filters/Helpers/UICollectionViewLayout+DefaultLayout.swift +++ b/TIUIElements/Sources/Filters/Helpers/UICollectionViewLayout+DefaultLayout.swift @@ -46,11 +46,10 @@ public extension UICollectionViewLayout { let groupSize = NSCollectionLayoutSize(widthDimension: conf.itemSize.widthDimension, heightDimension: .fractionalHeight(1)) let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize, subitems: [item]) - group.interItemSpacing = .fixed(conf.horizontalItemSpacing) let section = NSCollectionLayoutSection(group: group) section.contentInsets = NSDirectionalEdgeInsets(insets: conf.contentInsets) - section.interGroupSpacing = conf.verticalItemSpacing + section.interGroupSpacing = conf.horizontalItemSpacing section.orthogonalScrollingBehavior = .continuous return UICollectionViewCompositionalLayout(section: section) diff --git a/TIUIElements/Sources/Filters/ViewModels/DefaultFiltersViewModel.swift b/TIUIElements/Sources/Filters/ViewModels/DefaultFiltersViewModel.swift index beb0938d..c8c8ee1a 100644 --- a/TIUIElements/Sources/Filters/ViewModels/DefaultFiltersViewModel.swift +++ b/TIUIElements/Sources/Filters/ViewModels/DefaultFiltersViewModel.swift @@ -48,7 +48,6 @@ open class DefaultFiltersViewModel: NSObject, } open func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - let viewModel = cellsViewModels[indexPath.item] let cell = collectionView.dequeueReusableCell(withReuseIdentifier: viewModel.id, for: indexPath) filtersCollectionHolder?.configure(filterCell: cell, cellViewModel: viewModel) @@ -63,10 +62,11 @@ open class DefaultFiltersViewModel: NSObject, let changedFilters = filters .enumerated() - .filter { selected.contains($0.element) || deselected.contains($0.element) } + .filter { isFilterChanged($0.element, filters: selected) || isFilterChanged($0.element, filters: deselected) } for (offset, element) in changedFilters { cellsViewModels[offset].isSelected = selectedFilters.contains(element) + filters[offset].isSelected = selectedFilters.contains(element) } @@ -78,4 +78,8 @@ open class DefaultFiltersViewModel: NSObject, filtersCollectionHolder?.applyChange(changedItems) } + + private func isFilterChanged(_ filter: DefaultFilterPropertyValue, filters: [DefaultFilterPropertyValue]) -> Bool { + filters.contains(where: { $0.id == filter.id }) + } }