我无法恢复我取消选择的上一个单元格的属性

时间:2017-06-17 14:38:05

标签: ios swift uitableview tableview

我在mainstoryboard中有一个UIViewController,它包含一个tableview,它只显示标签,而不是令人兴奋的东西。当我点击其中一个单元格时,它会将我推向detailVC。问题是从这里开始,当我从detailVC回来时,我推动的单元格仍在寻找选择。它看起来很糟糕。我尽我所能尝试了一切。最后,细胞是定制细胞。

P.s。:我必须在这个项目中使用swift 2.3。

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

        let cell = tableVieww.dequeueReusableCellWithIdentifier("cellNew", forIndexPath: indexPath) as! AltKategoriNewCell
        let data = self.katData[indexPath.row]
        cell.textLabelNew?.text = data["CatogryName"] as? String

        return cell
    }

 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let cell = tableVieww.dequeueReusableCellWithIdentifier("cellNew", forIndexPath: indexPath) as! AltKategoriNewCell
    let data = self.katData[indexPath.row]

    cell.textLabelNew?.text = data["CatogryName"] as? String

    cell.contentView.backgroundColor = UIColor.lightGrayColor()
    cell.backgroundColor = UIColor.lightGrayColor()
    cell.textLabelNew?.textColor = UIColor.blackColor()

    urunlerList.altKatDic = self.katData[indexPath.row]
    performSegueWithIdentifier("urunlerList", sender: nil)
}

 func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {

    let cell = tableVieww.dequeueReusableCellWithIdentifier("cellNew", forIndexPath: indexPath) as! AltKategoriNewCell

    cell.contentView.backgroundColor = UIColor.whiteColor()
    cell.backgroundColor = UIColor.whiteColor()
    cell.textLabelNew?.textColor = UIColor.blackColor()
}

的TableView TableView

属性

enter image description here

1 个答案:

答案 0 :(得分:1)

首先出现的问题是您使用didSelectRowAtIndexPathdidDeselectRowAtIndexPath方法将单元格排队。 UITableView并不指望你那样做。如果您需要在didSelectRowAtIndexPath中获取单元格,可以询问

 let cell = tableView.cellForRow(at: indexPath)

UITableViewCellselectedBackgroundView,而UILabelhighlightedTextColor。知道这一点,你可以恰当地设置你的单元格,然后你就不需要在选择/取消选择时修改它的属性,如下所示:

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

    let cell = tableView.dequeueReusableCellWithIdentifier("cellNew", forIndexPath: indexPath) as! AltKategoriNewCell
    if nil == cell.selectedBackgroundView {
        cell.selectedBackgroundView = UIView()
        cell.selectedBackgroundView?.backgroundColor = UIColor.lightGrayColor()
    }
    let data = self.katData[indexPath.row]
    cell.textLabelNew?.text = data["CatogryName"] as? String

    return cell
}


func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    urunlerList.altKatDic = self.katData[indexPath.row]
    performSegueWithIdentifier("urunlerList", sender: nil)
}

有了这个,就可以删除didSelectRowAtIndexPathdidDeselectRowAtIndexPath的实施。