在Swift中更改UICollectionView的DataSource

时间:2015-07-13 10:11:49

标签: swift uicollectionview

我正在设计一个显示数据库中所有产品的UICollectionView。当用户打开collectionView时,会在自定义的CollectionViewCell中显示从[Product]数组中填充的所有产品。

我的Product类有一个category属性,我希望用户能够点击,并重新加载collectionView,显示用户过滤数据的类别列表。与iOS照片应用程序类似,虽然按照专辑查看照片,但最好是我开始考虑所有照片。

有没有办法在不实现第二个CollectionViewController的情况下执行此操作?

2 个答案:

答案 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