#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
, покажите мне, что вы передаете данные в nextViewController
прямо сейчас3. Да, но у меня есть
All item
, затем другая ячейка представления коллекции. Как я могу сделать, чтобы отдельные элементы выбирались дляAll item
, а также для других меток данных4. В принципе, вам нужно предоставить
IBOutlet
как ‘CollectionViews’, так и вdidSelect
проверить, какой контроллер представления существует, затем выполнять задачи соответствующим образом.