我正在尝试更改当您滑动UITableViewCell行时显示的视图的背景颜色,即“删除”按钮背后的背景颜色。
我尝试更改了cell.editingAccessoryView,但没有做任何事情。
UIView* myBackgroundView = [[UIView alloc] initWithFrame:CGRectZero];
myBackgroundView.backgroundColor = [UIColor clearColor];
cell.editingAccessoryView = myBackgroundView;
有什么想法吗?
答案 0 :(得分:8)
我正在回答这个问题,因为我花了一些时间才找到答案,这是搜索中出现的第一个条目。通过使用willDisplayCell
方法,您可以访问单元格背景颜色。请注意,[UIColor clearColor];
将返回白色,因此请相应调整代码。
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
cell.backgroundColor = [UIColor blackColor];
}
答案 1 :(得分:7)
你快到了。 UITableViewCell
类具有backgroundView
属性,默认为nil
。只需在问题中创建一个新的UIView
,然后将其分配给您单元格的backgroundView
属性。
cell.backgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
cell.backgroundView.backgroundColor = [UIColor clearColor];
答案 2 :(得分:1)
我认为这取决于您在单元格中添加内容的方式。
当我使用[cell addSubView]或[cell.contentView addSubView]直接向单元格添加内容时,我遇到了同样的问题。
我的解决方法是:
Create a view
Add all your content(labels, images etc;) to this view
Finally then add the view to your cell using [cell addSubView:tmpView]
您不再需要篡改backgroundView属性。我试过这个并且完美无缺!
答案 3 :(得分:0)
虽然这些答案是正确的,但我觉得在大多数情况下,只需在界面构建器中设置单元格的背景颜色即可。我的意思是单元格的实际背景颜色属性,而不是它的内容视图。如果它始终是内容视图的颜色,那么没有理由动态地进行动态。
答案 4 :(得分:0)
iOS8为UITableViewDelegate
添加了新方法:
optional func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]?
您可以创建自定义UITableViewRowAction
设置行动作。
例如:
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let deleteAction = UITableViewRowAction(style: .destructive, title: "Cancel", handler: { action, indexPath in
// DELETE ROW HERE
})
deleteAction.background = .green // you can change background color
return [deleteAction]
}
的更多信息
使用新API的好例子:here
答案 5 :(得分:0)
正确的方法,只是让大家知道:
func tableView(_ tableView: UITableView, willBeginEditingRowAt indexPath: IndexPath) {
for subview in tableView.subviews {
if NSStringFromClass(type(of: subview)) == "UISwipeActionPullView", let button = subview.subviews.first, NSStringFromClass(type(of: button)) == "UISwipeActionStandardButton"
{
button.backgroundColor = .clear
button.subviews.first?.backgroundColor = .clear
}
}
}