cell.selected不起作用

时间:2016-09-08 03:33:19

标签: ios swift uitableview

当我选择一行时,文字颜色变为白色。但是,当我滚动以刷新行时,文本颜色变回黑色。所以我添加了一个逻辑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)
 }

2 个答案:

答案 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})