SWIFT:滑动表格单元格以更改其颜色

时间:2018-07-27 11:06:56

标签: swift uitableview row cell

我是Swift(以及编码)的新手,所以请多多包涵。在桌子上,我已经设置好单元格,以便在向右滑动时看到两个选项:“完成”和“删除”。当我单击“删除”时,单元格行将被删除。当我单击“完成”时,我希望单元格行更改颜色。我不知道如何到达这一点,但是当我单击“完成”时,整个表将更改单元格行的颜色 except 。我尝试将可重用的标识符用于单元格原型,并将其设置为“ cell”,但由于无法确定如何声明“ cell”而不干扰CellForRowAt函数,因此无法解决问题。 / p>

这是我的代码:

      func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {

    let delete = UITableViewRowAction(style: .destructive, title: "Delete") { (action, indexPath) in
        // delete item at indexPath
        self.habits.remove(at: indexPath.row)
        tableView.deleteRows(at: [indexPath], with: .fade)
        print(self.habits)
    }
    let done = UITableViewRowAction(style: .default, title: "Done") { (action, indexPath) in
        // save item at indexPath
        tableView.backgroundColor = UIColor.lightGray
        print("Done")
    }

    done.backgroundColor = UIColor.green

    return [delete, done]
}

由于前面的这段代码,我认为我无法声明“单元格”:

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    // Dequeue Resuable Cell

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell") ?? UITableViewCell(style: .subtitle, reuseIdentifier: "cell")

    let Habit = habits[indexPath.row]
    cell.textLabel?.text = Habit.mainGoal
    cell.detailTextLabel?.text = Habit.microGoal

    return cell

我还是编码新手。我已经尝试查找此问题,但不确定是否措词不正确,但找不到答案。我的备用想法是删除单元格中的标签,但是从我收集的内容来看,这更加复杂。

2 个答案:

答案 0 :(得分:0)

在这里您可以找到实现要求的可能方法。

https://github.com/SwipeCellKit/SwipeCellKit

答案 1 :(得分:0)

您可以这样做

 let done = UITableViewRowAction(style: .default, title: "Done") { (action, indexPath) in
            // save item at indexPath
            let cell = tableView.cellForRow(at: indexPath)
            cell?.backgroundColor = UIColor.green
            print("Done")
        }