我们如何在集合视图中重新加载标题视图

Posted

技术标签:

【中文标题】我们如何在集合视图中重新加载标题视图【英文标题】:How can we reload header view inside our collection view 【发布时间】:2018-11-26 05:39:00 【问题描述】:

我一直在寻找一种方法来重新加载我的集合视图标题。所以我有一个集合视图标题和一个只包含图像的 CollectionViewCell。现在,当按下单元格时,我想在标题视图中显示图像而不调用 collectionView.reloadData()。这就是我的 didSelectItemAt 和 didDeselectItemAt 方法的样子。

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) 
    selectedImage = images[indexPath.item]
    let imageCell = collectionView.cellForItem(at: indexPath) as! CollectionCell
    imageCell.photoBackgroundView.backgroundColor = .red

    collectionView.reloadData()


override func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) 
    let imageCell = collectionView.cellForItem(at: indexPath) as! ImagePickerCell
    imageCell.photoBackgroundView.backgroundColor = .black

所以当我选择一个单元格时,视图变为红色,当我取消选择它时,视图变为黑色。这个video here,展示了不重新加载collectionView 的行为。现在这里是我想重新加载标题视图。

如果我确实使用了 collectionView.reloadData(),这是outcome. 我如何能够重新加载标题或标题视图显示所选单元格图像并变为红色的 collectionView。

【问题讨论】:

【参考方案1】:

您可以尝试使用全局实例。喜欢

class YourClass: UIViewController 

 /// Profile imageView
    var profileImageview = UIImageView()


在 CollectionView cellforItem 中分配一个 imageview。喜欢

let imageCell = collectionView.cellForItem(at: indexPath) as! CollectionCell
profileImageview = imageCell.imageView

然后当你每次选择collectionViewCell时

您可以调用函数来更改 imageView 的图像。喜欢

func updateImage() 
  profileImageview.image = UIImage()


【讨论】:

【参考方案2】:

好吧,我试图理解为什么有时你将单元格投射到 CollectionCell 中,有时又投射到 ImagePickerCell 中,无论如何尝试更改这些函数中的函数

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) 
    let cell = collectionView.cellForItem(at: indexPath) as! CollectionCell
    cell?.photoBackgroundView.backgroundColor = .red


func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) 
    let cell = collectionView.cellForItem(at: indexPath) as! CollectionCell
    cell?.photoBackgroundView.backgroundColor = .black

【讨论】:

以上是关于我们如何在集合视图中重新加载标题视图的主要内容,如果未能解决你的问题,请参考以下文章

如何自动重新加载集合视图?

如何在 swift 中重新加载 UICollectionReusableView 中的集合视图

如何重新加载 uitableviewcell 内的集合视图

如何在uitableview中加载数据而不每次都重新加载

如何重新加载 UIPageViewController 以在 Swift 中重新加载其视图

tableview 单元格内的集合视图重新加载数据