当selectionStyle none时,没有调用didDeSelectRowAtIndexPath

时间:2015-08-09 13:23:58

标签: ios swift uitableview

而不是背景视图改变颜色的默认selectionStyle我试图改变我添加到guideViewCell的UIView的颜色。但是,当取消选择单元格或按下另一个单元格时,它似乎不会在之前的indicatorImage上应用clearColor。我已经尝试将selectedBackgroundView设置为clearColor但是这将隐藏我的自定义边框。我该怎么做才能解决这个问题?

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {


    let cell = tableView.dequeueReusableCellWithIdentifier("GuideCell", forIndexPath: indexPath) as! GuideViewCell
    cell.selectionStyle = UITableViewCellSelectionStyle.None



    return cell
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    var cell = tableView.cellForRowAtIndexPath(indexPath) as! GuideViewCell

    cell.indicatorImage.backgroundColor = UIColor.blackColor()
}

func tableView(tableView: UITableView, didDeSelectRowAtIndexPath indexPath: NSIndexPath) {
    var cell = tableView.cellForRowAtIndexPath(indexPath) as! GuideViewCell

    cell.indicatorImage.backgroundColor = UIColor.clearColor()
}

2 个答案:

答案 0 :(得分:1)

我的解决方案只是创建新变量并保存indexPath

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    var cell = tableView.cellForRowAtIndexPath(indexPath) as! GuideViewCell

    if (lastSelectedCell != nil) {
    var oldCell = tableView.cellForRowAtIndexPath(lastSelectedCell!) as! GuideViewCell
    oldCell.indicatorImage.backgroundColor = UIColor.clearColor()
    }
    lastSelectedCell = indexPath



    cell.indicatorImage.backgroundColor = UIColor.blackColor()
}

答案 1 :(得分:0)

您需要确保设置了tableView委托,并且tableView allowSelection或allowsMultipleSelection设置为true。