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

时间:2018-07-03 21:03:41

标签: swift uiviewcontroller uicollectionview uilabel uicollectionviewcell

UIView

当选择了TextField下面的Button时,如何更改顶部UICollectionViewCell内部的标签的颜色(例如Q1)?

我只希望当前问题的标签更改其文本颜色 也就是说,如果用户在问题1上,则在选择按钮后,会将Q1颜色从橙色更改为白色。

请参见附件图片

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

2 个答案:

答案 0 :(得分:0)

最好通过调用来更新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
}

答案 1 :(得分:0)

如果我对您的情况有正确的了解,则不需要滚动显示收集视图,因此不需要单元的可重用性。因此,您需要一个静态结构。对于这种情况,最好对静态单元格使用UITableView。您可以为每个单元格以及每个单元格内的每个元素设置IBOutlet到主View Controller中。然后在TouchUpInside的特定按钮内,为标签设置颜色。