【发布时间】:2016-02-07 02:39:08
【问题描述】:
我有一个方法,每次调用它时都会返回一种新颜色,我想做的是每次添加新颜色时都能用新颜色为行着色。
使用下面的代码我只得到red 行,蓝色、绿色和黄色永远不会被调用。
再次,我需要做的是能够用数组中的四种颜色之一为每一行着色,第一行 red 第二行 blue,第三行 green 第四行 @987654326 @ 然后开始再次为第五个red 着色,第六个blue 等等。
class CustomCell: UITableViewCell {
let myColors = [colorMyRed, colorMyBlue, colorMyGreen, colorMyYellow]
var nextItemIndex = 0
func color() -> UIColor {
let result = myColors[nextItemIndex]
nextItemIndex = nextItemIndex + 1
return result
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
// how can I assign a new color to this variable
// each time awakeFromNib is called
let myColor:UIColor = color()
// these labels need to be colored with one of the
// four colors each time a new row is added
labelPrice.textColor = myColor
labelDiscount.textColor = myColor
labelSavings.textColor = myColor
}
}
有什么建议吗?
【问题讨论】:
-
nextItemIndex是一个实例变量。每次创建新单元格时,都会将其初始化为零。您需要将其设为静态才能使其正常工作。 -
我认为在 Swift 中静态的工作方式与在其他语言中的工作方式不同。
-
好吧,Swift 的语法确实很糟糕,但
static的工作原理几乎相同:stackoverflow.com/questions/26804066/… -
感谢您的帮助,但我最终重新构建了我的代码以在
cellForRowAtIndexPath中进行着色并工作。谢谢大家。 -
这是最好的aproac,因为当tableView deques cell时不会调用awakeFromNib。所以最好在cellForRowAtIndexPath中保持计数
标签: ios swift uitableview