当我选择一行时,文字颜色变为白色。但是,当我滚动以刷新行时,文本颜色变回黑色。所以我添加了一个逻辑if(cell.selected)。然而它没有用。当我滚动。代码无法进入if.Here是代码: -
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let selectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
for subview in selectedCell.subviews {
if let view = subview as? UILabel {
view.textColor = UIColor.whiteColor()
}
}
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var renderWidth:CGFloat = 8
var renderYPosition:CGFloat = 15
let cell:UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "idcell")
let date = UILabel(frame: CGRectMake(renderWidth, renderYPosition, 110, 20))
let dateText = "asdasdsad"
date.text = dateText
if (cell.selected) {
date.textColor = UIColor.whiteColor()
}
cell.addSubview(date)
}
答案 0 :(得分:0)
您每次都在创建新的UITableViewCell
。建议重复使用它。
而不是用这个创建一个新的单元格:
let cell:UITableViewCell=UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "idcell")
使用它来重复使用单元格:
let cell = tableView.dequeueReusableCellWithIdentifier("cellIdInStoryboard", forIndexPath: indexPath) as! UITableViewCell
标识符应与您在storyboard中设置的标识符相同。
答案 1 :(得分:0)
问题在于cellForRowAtIndexPath函数中的if子句,并且每次加载tableview时都会创建单元实例。您需要重用tableview单元格。
grandchildren_parents = Parent.includes(children: :grandchildren).where.not(grandchildren: {id: nil})