按下按钮时更改行的颜色 - 快速

时间:2018-02-01 08:48:13

标签: ios swift uitableview

我有以下代码,当向左滑动UITableView行时会出现两个按钮。

override func tableView(_ tableView: UITableView, editActionsForRowAt: IndexPath) -> [UITableViewRowAction]? {
    let more = UITableViewRowAction(style: .normal, title: "Picked") { action, index in
        print("Stock Picked")

    }
    more.backgroundColor = .green

    let favorite = UITableViewRowAction(style: .normal, title: "Not Enough") { action, index in
        print("Not enough stock to pick")
    }
    favorite.backgroundColor = .orange



    return [favorite, more]
}

override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return true
}

我现在正试图让它如果按下其中一个按钮,它出现的行将改变颜色。即如果向左滑动一行并按下Picked按钮,则行颜色将变为绿色。

我还希望它在行上设置某种标志,只有当所有行都将标志设置为true时才允许应用程序向前移动。

任何建议都非常感谢。

1 个答案:

答案 0 :(得分:2)

要更改编辑操作的单元格颜色,您应使用cellForRowAtIndexpath UITableView方法获取单元格并将背景颜色更改为所需颜色,这必须在提供的操作块内完成由UITableViewRowAction

override func tableView(_ tableView: UITableView, editActionsForRowAt: IndexPath) -> [UITableViewRowAction]? {
    let more = UITableViewRowAction(style: .normal, title: "Picked") { action, index in
        print("Stock Picked")
        let cell = tableView.cellForRow(at: index) as? UITableViewCell
        cell?.backgroundColor = .green
    }
    more.backgroundColor = .green

    let favorite = UITableViewRowAction(style: .normal, title: "Not Enough") { action, index in
        print("Not enough stock to pick")
        let cell = tableView.cellForRow(at: index) as? UITableViewCell
        cell?.backgroundColor = .orange
    }
    favorite.backgroundColor = .orange


    return [favorite, more]
}