如何通过单击更改集合视图单元格中的标签颜色
Posted
技术标签:
【中文标题】如何通过单击更改集合视图单元格中的标签颜色【英文标题】:how to change the label colour in collection view cell by click 【发布时间】:2016-07-20 16:28:39 【问题描述】:我有一个包含一些单元格的集合视图。在我的单元格中,我有一个标签来显示国家名称列表。每次点击每个单元格标签时,我都会在我的集合视图下方的表格视图中显示一些数据。
当我按下任何单元格标签时,我需要将该标签的文本变为红色。其他标签名称应为黑色。
如何做到这一点?我已经尝试了下面的代码,但是当我在该单元格中选择任何标签名称时,所有单元格标签都会变成红色。
我该如何解决这个问题?
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
if let cell = collectionView1.cellForItemAtIndexPath(indexPath)
var label = cell.viewWithTag(100) as? UILabel
label!.textColor = UIColor.redColor()
【问题讨论】:
【参考方案1】:您的标签不会更新,因为您需要刷新单元格。所以我可以为您提供最好的解决方案 - 在 自定义单元格的类
中更改setSelected
方法中的标签颜色
编辑:
override var setSelected(selected: bool)
if (selected)
self.youLabel!.textColor = UIColor.redColor()
else
self.youLabel!.textColor = UIColor.blackColor()
这是您的自定义类中的函数示例。抱歉,如果有错误 - 从 iPhone 回答
【讨论】:
我是 ios 新手。你能给我一些代码示例吗。我应该在我的自定义单元格类中做什么 好的。这很简单。 是的,我在这行func setSelected(selected: bool)
bool
下遇到错误
尝试参考这个链接。 ***.com/questions/29049238/…【参考方案2】:
Swift 4:
在你的单元格中:
override var isSelected: Bool
didSet
label.textColor = .red
来自委托类:
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
cell.isSelected = true
【讨论】:
【参考方案3】:我用你的代码创建的,它对我有用。但我认为,最好使用自定义 collectionview 单元创建。
demo project
【讨论】:
我的问题后代码中写的同样的事情知道。就像只有你的解决方案也在那里。但我需要的是,当我按下一个标签时,它必须变成红色。并且如果我选择其他标签,现有的选定标签应变为黑色。意味着只有选定的单元格标签单独显示红色。 func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) let cell = collectionView.cellForItemAtIndexPath(indexPath) let label = cell!.viewWithTag(100) as? UILabel label?.textColor = UIColor.blackColor() 所以我认为你需要在collectionview中转回标签颜色。希望能帮助到这个。 :)以上是关于如何通过单击更改集合视图单元格中的标签颜色的主要内容,如果未能解决你的问题,请参考以下文章
通过单击更改单元格中的颜色和内容(静态)并在重新加载后保持更改
在iOS中选择单元格时如何以编程方式更改原型单元格中的标签文本颜色和图像