选择 UIViewController 类的按钮时如何更新 UICollectionViewCell 中标签的颜色

Posted

技术标签:

【中文标题】选择 UIViewController 类的按钮时如何更新 UICollectionViewCell 中标签的颜色【英文标题】:How to update Colour of Label in UICollectionViewCell when UIViewController Class's button is selected 【发布时间】:2018-07-03 21:03:40 【问题描述】:

UIView

如何在选择文本字段下面的按钮时更改UICollectionViewCell内的标签中的颜色?

我只希望当前问题的标签更改其文本颜色 即,如果用户在问题1上,则选择按钮时,它将Q1从橙色变为白色。

请看上图

我使用 UIViewController 作为 UICollectionView 的委托/数据源

【问题讨论】:

【参考方案1】:

通过调用更新UICollectionViewCell/UITableViewCell 是最可取的 collectionView.reloadItems(at: [IndexPath])

我想你有一系列问题和一些正确/错误的标志。所以你应该有按钮选择处理程序和单元格组合方法

@objc private func onSomeButton(_ sender: UIButton) 
    let questionNumber: Int = 999
    self.markAnswer(correct: true, atIndex: questionNumber)
    self.collectionView.reloadItems(at: [IndexPath(item: questionNumber, section: 0)])

然后这个调用会触发重新加载这个单元格

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: self.someDefaultRequseId, for: IndexPath)
    cell.label.textColor = self.isAnswerCorrect(at: indexPath.item) ? .white : .red

【讨论】:

谢谢!已经被困了好几个星期了!【参考方案2】:

如果我对您的情况的理解正确,则您不需要在集合视图中滚动,因此您不需要单元格的可重用性。所以你需要一个静态结构。对于这种情况,最好将UITableView 与静态单元格一起使用。您可以为每个单元格设置IBOutlet,也可以将单元格内的每个元素设置到主视图控制器中。然后在TouchUpInside Action 中为您的标签设置特定按钮的颜色。

【讨论】:

以上是关于选择 UIViewController 类的按钮时如何更新 UICollectionViewCell 中标签的颜色的主要内容,如果未能解决你的问题,请参考以下文章

UIViewController 过渡在下拉手势关闭时闪烁

jquery 在单击单选按钮时选择并激活特定类的所有项目

按下 ToolBar 按钮时向 UIViewController 添加和删除子 ViewController

如何告诉 UIViewController 在 UIPopOverController 中按下了按钮?

在 UIViewController 我怎样才能有一个方法自动处理很多按钮

在单击按钮时重置/重新初始化/重新启动 UIViewController 视图的最简单(正确)方法是啥?