Как отобразить все элементы в качестве первого индекса в представлении коллекции

#ios #swift #uicollectionview

#iOS #swift #uicollectionview

Вопрос:

У меня есть один UICollectionView , в котором я выбираю название некоторой категории и отображаю это имя, и когда пользователь нажимает любую ячейку в UICollectionView , эти конкретные данные будут отображаться в порядке убывания UICollectionView (второй UICollectionView ).

Итак, что мне нужно, например, в моем UICollectionView выглядит так, что это означает :

 "Gems gaster royel mems"
  

Мне нужно показать :

  "All items Gems gaster royel mems"
  

Как динамически добавлять All items в мой первый индекс моего представления коллекции, чтобы, если пользователь нажмет на эту ячейку представления коллекции — Все элементы — мне нужно показать весь продукт, доступный в моей базе данных.

  func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
    {
 let cell = collectionview1.dequeueReusableCell(withReuseIdentifier: "cell2", for: indexPath) as! smallDetail_cell

            cell.productName.text = BTdata2[(indexPath as NSIndexPath).row].BTNames2

            return cell

        }
  

Комментарии:

1. добавьте свой collectionview cellForItemAtIndexPath в свой вопрос

2. Вы имеете в виду аккордеон?

3. @iOSAppDev извините, я новичок в ios. Не удалось понять, что такое accordion??

4. Google = «uicollectionview accordion»

5. @BhavinRamani если я добавлю вот так, то при нажатии на эту ячейку будет отображаться весь продукт, доступный в моей базе данных. Я уже выполнил вызов api, и у меня есть вся модель данных продукта. Если мне это нравится, как я могу написать по щелчку на этом All item , чтобы отобразить весь продукт в моем втором представлении коллекции

Ответ №1:

 var selectedindex : NSInteger = 0 

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{

        if(collectionView == collectionview1)
        {
            return BTdata2.count   1

        }
        else
        {
             return Productdata.count

        }

    }

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
     let cell = collectionview1.dequeueReusableCell(withReuseIdentifier: "cell2", for: indexPath) as! smallDetail_cell

            //cell.productName.text = BTdata2[(indexPath as NSIndexPath).row].BTNames2

        if selectedindex == indexPath.row{
            cell.productName.textColor = UIColor.red
        }else{
           cell.productName.textColor = UIColor.black
        }
        if indexPath.row == 0 {
            cell.productName.text = "All Items"
        }else{

            cell.productName.text =  BTdata2[(indexPath as NSIndexPath).row - 1].BTNames2!
        }
        return cell
 }



func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
{
       if collectionView == collectionview1 {
            if indexPath.row == 0 {
                print("all item show here click")

            }else{
               print("your button click here like ",BTdata2[(indexPath as NSIndexPath).row - 1].BTNames2!)
                // write code for display all selected category item..
            }
           selectedindex = indexPath.row
           collectionview1.reloadData()
        }

    }
  

Вывод :

все элементы показать здесь нажмите

ваша кнопка нажимается здесь, как смартфоны

ваша кнопка нажимается здесь, как ноутбуки

Ответ №2:

Попробуйте это,

  func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{
        let cell = collectionview1.dequeueReusableCell(withReuseIdentifier: "cell2", for: indexPath) as! smallDetail_cell

        if indexPath.row == 0{
            cell.productName.text = "All items"
        }else{
            cell.productName.text = BTdata2[((indexPath as NSIndexPath).row) - 1].BTNames2
        }

        return cell
    }
  

Обновите свой collectionView(_ numberOfItemsInSection:) следующим образом,

 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return BTdata2.count   1
}
  

Комментарии:

1. Как я могу выполнить метод выбора, чтобы All item отобразить все мои данные в представлении моей коллекции

2. Вам нужно передать объект BTData2 из didSelect , покажите мне, что вы передаете данные в next ViewController прямо сейчас

3. Да, но у меня есть All item , затем другая ячейка представления коллекции. Как я могу сделать, чтобы отдельные элементы выбирались для All item , а также для других меток данных

4. В принципе, вам нужно предоставить IBOutlet как ‘CollectionViews’, так и в didSelect проверить, какой контроллер представления существует, затем выполнять задачи соответствующим образом.