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