Фильтрация путем выполнения перехода - не лучший способ.Будет лучше обновить сам collectionView в зависимости от выбранного фильтра.Например, если у вас есть продукты, которые соответствуют определенной категории, вы можете просто сделать что-то вроде:
let products = [Product(category: "one"), Product(category: "one"), Product(category: "two")]
let foo = products.filter {$0.category == "one"}
, эта функция фильтра будет возвращать только продукты, которые соответствуют первой категории.Затем вы можете просто использовать отфильтрованный массив для заполнения collectionView.
О панели поиска, да, они будут работать вместе с любой другой функцией фильтра.По сути, вы просто выполните два фильтра:
- На основе свойства категории
- На основе введенной вами подстроки
Только для дальнейшего использования, еслиВы добавляете searchBar в качестве collectionViewCell или в качестве заголовка, вам придется перезагрузить элементы с помощью indexPaths, потому что reloadData()
оставит ответчика в строке поиска.
Еще одна вещь, так же как предложение, это обычная практика, когда ваши методы называются строчными -> filter () вместо Filter ().