我有以下代码,当向左滑动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时才允许应用程序向前移动。
任何建议都非常感谢。
答案 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]
}