iOS Collection View Change Cell content on didSelectItemAt indexPath

Posted

技术标签:

【中文标题】iOS Collection View Change Cell content on didSelectItemAt indexPath【英文标题】: 【发布时间】:2017-09-26 05:28:19 【问题描述】:

我需要访问特定单元格并在 didSelectAt indexPath 上动态更改其内容

func collectionView(_ collectionView: UICollectionView, 
    didSelectItemAt indexPath: IndexPath) 
        if collectionView == self.trendHeaderView
            print(indexPath.row)
            // Needs to access cell and change the 
            // content of cell i.e label text inside cell ??
    

【问题讨论】:

【参考方案1】:

您不能直接在 didSelectItemAt 中更改单元格的内容。 可以看到,在 UICollectionView 中 cell 是通过调用 dequeReusableCell 来重用的。

所以我认为,为此制作模型很好。 并更改 didSelectItemAt 中的模型内容。 并请调用 reloadData 重绘collectionview。

【讨论】:

【参考方案2】:

我需要访问特定的单元格

不,你没有。您应该永远直接干预单元格的内容。您需要访问集合视图的数据源正在使用的 data(“模型”)。你可以很容易地做到这一点,因为你有indexPath。更改数据,然后重新加载集合视图,以便它获取更改并显示它们。

【讨论】:

考虑一个案例,我在单元格和标签中有一个视图,我必须更改嵌套视图背景,那么我该怎么做?? 按照我在回答中所说的去做。制作有关“嵌套视图背景”应该是 data (模型)的一部分的信息。换句话说,将所有需要的信息编码到模型中,然后让您的cellForItemAt: 根据该信息处理配置。这就是拥有数据源的意味着。没有其他方法可行,尤其是因为单元格在不同的项目槽中重复使用。

以上是关于iOS Collection View Change Cell content on didSelectItemAt indexPath的主要内容,如果未能解决你的问题,请参考以下文章

《iOS Human Interface Guidelines》——Collection View

在 ios 中使用 Collection View 的抽屉菜单

IOS UIView 03- 自定义 Collection View 布局

如何在ios中创建没有tableview和collection view的行

如何在 iOS 中避免/禁用 Collection View 的垂直滚动

iOS Collection View Change Cell content on didSelectItemAt indexPath