我正在设计一个显示数据库中所有产品的UICollectionView。当用户打开collectionView时,会在自定义的CollectionViewCell中显示从[Product]数组中填充的所有产品。
我的Product类有一个category
属性,我希望用户能够点击,并重新加载collectionView,显示用户过滤数据的类别列表。与iOS照片应用程序类似,虽然按照专辑查看照片,但最好是我开始考虑所有照片。
有没有办法在不实现第二个CollectionViewController的情况下执行此操作?
答案 0 :(得分:1)
是的,你可以通过添加一些指标来实现它,当用户输入类别按钮时你会改变它,例如bool变量:
var showCategory = false
并且在每个数据源/委托方法中都需要检查条件,例如:
override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
if (showCategory) {
return 10 // your logic to display data for categories
} else {
return 15 // your logic to display data for non categories
}
}
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if (showCategory) {
return 10 // your logic to display data for categories
} else {
return 15 // your logic to display data for non categories
}
}
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! UICollectionViewCell
// Configure the cell
if (showCategory) {
// your logic to display data for categories
} else {
// your logic to display data for non categories
}
return cell
}
请记住,当您想要显示类别时,您应该更改数据源,将showCategory变量设置为true并调用重新加载数据方法。
如果你有更多的数据源/委托方法,你也应该添加条件。
答案 1 :(得分:0)
正如Arsian Asim建议的那样,更改集合视图的数据源,然后在CollectionView上调用reloadData