Как я могу добавить панель поиска над UICollectionView?

Я бы хотел, чтобы пользователи моего приложения могли искать изображения, используяUISearchBar вышеUICollectionView, Согласно моему пониманию,UICollectionView должен быть вUICollectionViewController работать правильно. Тем не менее, Xcode не позволит мне поместить панель поиска вUICollectionViewController, Я также не могу использовать общийUIViewController поскольку представление коллекции не будет работать должным образом. Как я могу достичь желаемой функциональности?

 Chandan13 июл. 2016 г., 17:24
найдите ссылку ниже, это может вам помочь.пример-как-интегрировать-uicollectionview-with-uisearchbar -1

Ответы на вопрос(2)

Решение Вопроса

CollectionView + SearchBar сSwift3 + Раскадровка реализация.

Создание представления заголовка:

Создание панели поиска:

Создайте пользовательский класс многократного использования

Установите пользовательский класс для многократного использования

Создать панель поиска розетки

Уловка: подключите делегат панели поиска к классу COLLECTION VIEW, выход панели поиска перейдет в CUSTOM REUSABLE VIEW CLASS

Реализовать метод заголовка CollectionView протокола

    override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {

         if (kind == UICollectionElementKindSectionHeader) {
             let headerView:UICollectionReusableView =  collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "CollectionViewHeader", for: indexPath)

             return headerView
         }

         return UICollectionReusableView()

    }

Установить делегата панели поиска

    class MyCollectionViewController: (other delegates...), UISearchBarDelegate {

И, наконец, ваши методы делегата панели поиска будут вызываться в вашем классе CollectionView.

//MARK: - SEARCH

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
    if(!(searchBar.text?.isEmpty)!){
        //reload your data source if necessary
        self.collectionView?.reloadData()
    }
}

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    if(searchText.isEmpty){
        //reload your data source if necessary
        self.collectionView?.reloadData()
    }
}
 mourodrigo15 нояб. 2018 г., 20:10
@Manu, viewForSupplementaryElementOfKind не нуждается в «переопределении» реализации сигнатуры метода. Я думаю, это может решить вашу проблему. Если вам нужно что-то еще, просто напишите мне на мой почтовый ящик. знак равно
 Manu13 нояб. 2018 г., 04:26
@mourodrigo Привет, когда я пытаюсь переопределить этот метод collectionView (viewForSupplementaryElementOfKind), xCode выдает ошибку «метод не переопределяет ни один метод из своего суперкласса». Я добавил делегата панели поиска в свой viewController и этот выход, я также установил UISearchBarDelegate для моего viewController ... Одна из проблем при запуске кода состоит в том, что панель поиска не отображается, в ней есть пространство заголовка, но внутри нет панели поиска.
 aumansoftware31 мар. 2017 г., 18:30
К сожалению, у этого подхода есть несколько побочных эффектов; строка поиска будет отображаться в заголовке каждого раздела, панель поиска будет прокручиваться вне поля зрения, и панель поиска теряет свой статус firstResponder при вызове self.collectionView? .reloadData (). Посмотрите на Иеремию-де Великого, шаг за шагом, репо для использования UISearchController с UICollectionViewgithub.com/jeremiah-de/CollectionViewSearch/tree/...

UICollectionView внутриUICollectionViewController. UICollectionView это какUITableView и может быть добавлен в любом месте. Все, что вам нужно сделать, это реализоватьUICollectionViewDelegate а такжеUICollectionViewDataSource протоколы. Вы можете следовать следующему урокуДополнительный заголовок и добавить панель поиска в качестве дополнительного заголовкаUICollectionView.

 A Tyshka13 июл. 2016 г., 17:25
Я сделал это, но я получал NSExceptions, хотя я реализовал UICollectionViewDelegate и UICollectionViewDataSource
 Vishnu gondlekar13 июл. 2016 г., 17:26
Что было исключением?

Ваш ответ на вопрос