我的应用程序的主题颜色是浅绿色,所以一切都必须是绿色的,就像这个表视图单元格一样:
问题在于,当我点击“编辑”按钮时,单元格左侧会弹出一个小的减号,并且不是绿色的:
我不明白为什么会这样。这是我在cellForRowAtIndexPath
let cell = UITableViewCell()
cell.textLabel?.text = someStuff
cell.textLabel?.backgroundColor = UIColor(red: 0xca / 0xff, green: 1, blue: 0xc7 / 0xff, alpha: 1)
cell.contentView.backgroundColor = UIColor(red: 0xca / 0xff, green: 1, blue: 0xc7 / 0xff, alpha: 1)
// Look! here I set the color of the editing accessory!
cell.editingAccessoryView?.backgroundColor = UIColor(red: 0xca / 0xff, green: 1, blue: 0xc7 / 0xff, alpha: 1)
return cell
正如您所看到的,我已将所有内容设置为绿色,包括文本标签,背景,甚至是editingAccessoryView
!但那件事并不是绿色的!如上所示,它保持白色。
我还有别的东西可以让它成为绿色吗?
答案 0 :(得分:5)
您必须使用tableView:willDisplayCell:forRowAtIndexPath:
方法执行此操作。你可以这样:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = "MyText"
return cell
}
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
cell.backgroundColor = UIColor(red: 0xca / 0xff, green: 1, blue: 0xc7 / 0xff, alpha: 1)
}
修改强>
答案 1 :(得分:3)
可以像这样修改editingAccessoryView背景颜色:
cell.contentView.superview.backgroundColor = UIColor(red: 0xca / 0xff, green: 1, blue: 0xc7 / 0xff, alpha: 1)
如果contentView.superview
背景颜色的更改不起作用,您可以尝试:
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
cell.backgroundColor = UIColor(red: 0xca / 0xff, green: 1, blue: 0xc7 / 0xff, alpha: 1)
}
答案 2 :(得分:1)
这是我更新 Swift 2.2
按钮的方法override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]?
{
let deleteBtn = UITableViewRowAction(style: .Default, title: "Delete", handler: { (action, indexPath) in
print("Delete pressed!")
})
deleteBtn.backgroundColor = UIColor.blueColor()//Change color here
let editBtn = UITableViewRowAction(style: .Default, title: "Edit", handler: { (action, indexPath) in
print("Edit pressed!")
})
editBtn.backgroundColor = UIColor.redColor()//change color here
return [deleteBtn, editBtn]
}
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
return true
}
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
}
答案 3 :(得分:0)
不知道为什么苹果不会将这些东西置于默认状态。这是改变整个UITableViewCell背景颜色的代码:
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cellView = tableView.dequeueReusableCell(withIdentifier: cellReuseId, for: indexPath)
//Setup selectedbackgroundView which change color includes editingAccessoy background color
let selectedBackground = UIView()
selectedBackground.frame = cellView.frame
selectedBackground.backgroundColor = SCColor.selectedColor
cellView.selectedBackgroundView = selectedBackground
//Setup backgroundView which change color includes asscessory background color
let cellBackground = UIView()
cellBackground.frame = cellView.frame
cellBackground.backgroundColor = cellData.isSelected ? SCColor.selectedColor : UIColor.white
cellView.backgroundView = cellBackground
}
答案 4 :(得分:0)
此函数的方法签名在后续版本的swift中略有改变。
在Swift 4+中使用
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
cell.backgroundColor = UIColor.red // Your color here!
}