TableView编辑模式:删除默认的选定背景色

时间:2018-09-25 16:30:41

标签: ios swift uitableview swift4

我正在以编辑模式使用tableview。我正在使用复选标记多选方法,正如您在内置邮件编辑模式的iOS中看到的那样-也链接了here

我的问题是,当选择一个单元格时,背景会更改为默认的tintColor。

我的预期结果是tableViewCell onSelect填充了选中标记,但不更改背景颜色。

我尝试将selectionStyle更改为.none,这使它无法在编辑模式下完全选择单元格。我还尝试过更改选定的背景视图,但没有成功。

open override func viewWillLoad(withData data: Any!) {
    self.view.backgroundColor = .gray
    self.tableView = UITableView()
    self.tableView.setEditing(true, animated: true)
    self.tableView.delegate = self
    self.tableView.dataSource = self
    self.tableView.allowsMultipleSelection = true
    self.tableView.allowsSelectionDuringEditing = true

    self.view.addSubview(tableView)
}

public func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
    return UITableViewCellEditingStyle.init(rawValue: 3)!
}

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    // dequeueing my cell here

    cell.textLabel?.text = data[indexPath.row]
    // cell.selectionStyle = ????

    return cell
}

除了创建自定义按钮之外,还有其他方法可以实现吗?

3 个答案:

答案 0 :(得分:0)

尝试一下:

func tableView(_ tableView: UITableView, 
   shouldHighlightRowAt indexPath: IndexPath) -> Bool {
     return !tableView.isEditing
}

答案 1 :(得分:0)

您可以在情节提要中删除突出显示的颜色。 enter image description here

选择无选择

您还可以通过代码删除该颜色

cell.selectionStyle = .none

答案 2 :(得分:0)

事实证明,使用多重选择的tableViews具有特定的背景!

我的解决方案是在单元格上使用以下代码:

let selectedView = UIView()
selectedView.backgroundColor = cellBackgroundColor
self.multipleSelectionBackgroundView = selectedView
self.selectionStyle = .default

如果仅使用单个选择,则可以使用以下内容:

let selectedView = UIView()
selectedView.backgroundColor = cellBackgroundColor
self.selectedBackgroundView = selectedView
self.selectionStyle = .default