我在collectionView
内插入了tableViewCell
。 Tableview
包含类别列表,collectionView
包含所有产品。如何根据选择的表视图行在collectionView
中拥有不同数量的项目?我已经尝试存储选定的表视图行并使用它来定义要返回的项目数,但是它要么崩溃而没有错误代码,告诉我值为nil
或者只是没有显示任何clitems在collectionView
。任何帮助将不胜感激。感谢您的时间。
以下是我的代码:
我的自定义表格视图单元格:
extension ExpandableCell: UICollectionViewDelegate, UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
let toReturn = categoryItems.count
return counter
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
//
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionCell", for: indexPath) as! CustomCollectionViewCell
//What is this CustomCollectionCell? Create a CustomCell with SubClass of UICollectionViewCell
//Load images w.r.t IndexPath
print(self.selectedCategory.description)
let newArray = starbucksMenu[selectedCategory]
//cell.image.image = UIImage(named: (allItems[selectedCategory]?[indexPath.row])!)
cell.label.text = categoryItems[indexPath.row]
//cell.layer.borderWidth = 0.1
return cell
}
我的表格视图委托方法:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print(indexPath.row)
word = indexPath.row
guard let cell = tableView.cellForRow(at: indexPath) as? ExpandableCell
else { return }
switch cell.isExpanded
{
case true:
self.expandedRows.remove(indexPath.row)
self.selectedCategory = ""
case false:
self.expandedRows.insert(indexPath.row)
}
self.selectedCategory = categories[indexPath.row]
print(self.selectedCategory)
//self.array = starbucksMenu[starbucksMenuCategories[indexPath.row]]!
//self.collectionView.reloadData()
cell.menuItems = allItems[selectedCategory]!
cell.categoryItems = allItems[selectedCategory]!
cell.isExpanded = !cell.isExpanded
self.itemsArray = allItems[selectedCategory]!
self.tableView.beginUpdates()
self.tableView.endUpdates()
}
我尝试了很多东西,我尝试在数组中添加项目并返回计数(不显示任何内容)。我有一个包含必要项目的字典,所以我也尝试返回allItems [selectedCategory]?。count并且这总是返回一个错误,我相信selectedCategory在调用后没有任何值。
答案 0 :(得分:0)
使用适当的操作在beginUpdate()和endUpdate()
之间创建一个for循环的集合视图项