选择 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 中标签的颜色的主要内容,如果未能解决你的问题,请参考以下文章
按下 ToolBar 按钮时向 UIViewController 添加和删除子 ViewController
如何告诉 UIViewController 在 UIPopOverController 中按下了按钮?