Фильтрация collectionView в зависимости от выбранного элемента из другого collectionView - PullRequest
0 голосов
/ 27 марта 2020

У меня есть viewController с двумя коллекциями ViewView, один segmentedControl и одна панель поиска.

Первый collectionView содержит ветви мобильных телефонов, такие как Apple, Samsung и др. c. Каждый элемент показывает только значок ветви. Второй collectionView содержит устройства мобильных телефонов, которые нужно выбрать для их покупки.

Сегментированный элемент управления имеет четыре секции, которые используются для сортировки мобильных устройств в зависимости от различных параметров, таких как, цена, дата и расстояние до пользователя. Панель поиска используется для фильтрации устройств в зависимости от строки поиска.

Теперь мне нужно отфильтровать устройства в зависимости от элемента ветви, выбранного в первом наборе collectionView.

Здесь у вас есть мой текущий код .

  1. Сортировка в зависимости от выбранного сегментированного элемента управления (работает):

    @ IBAction fun c фильтро (_ отправитель: любой) {

    охранник пусть с c = отправитель как? UISegmentedControl else {return}

       let getIndex = sc.selectedSegmentIndex
       switch (getIndex) {
       case 0:
           print("barato")
    
           dispositivosSorted.sort(by: {$0.precio_dispositivo.compare($1.precio_dispositivo, options: .numeric) == .orderedAscending})
    
       case 1:
           print("caro")
    
            dispositivosSorted.sort(by: {$0.precio_dispositivo.compare($1.precio_dispositivo, options: .numeric) == .orderedDescending})
    
       case 2:
    
         dispositivosSorted.sort(by: {$0.fecha_dispositivo.compare($1.fecha_dispositivo, options: .numeric) == .orderedDescending})
    
       case 3:
           print("cercano")
    
    
           dispositivosSorted.sort(by: {$0.distancia.compare($1.distancia, options: .numeric) == .orderedDescending})
    
    
    
       default:
           print("no filtro")
    
       }
    
       collectionViewDispositivos.reloadData()
    

    }

  2. Фильтрация элементов в зависимости от строки поиска (также работает):

    fun c searchBar (_ searchBar: UISearchBar, textDidChange searchText: String) {

    if searchBar.text == nil || searchBar.text == "" {
        filtrados = false
        collectionViewDispositivos.reloadData()
    }
    else {
        filtrados = true
        let buscado = searchBar.text!.lowercased()
        dispositivosFiltrados = dispositivosSorted.filter({$0.modelo_del_dispositivo.lowercased().contains(buscado) })
        collectionViewDispositivos.reloadData()
    }
    

    }

  3. И это мое предложение отфильтровать устройства после выбора элемента при первом collectionView (не работает):

    fun c collectionView (_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

    если collectionView == self.collectionViewMarcas {

    dispositivosSorted.filter { $0.modelo_dispositivo.contains(marcas[indexPath.row].nombre) }
    
    
    collectionViewDispositivos.reloadData()
    

    }}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...