Режим редактирования TableView: удалить выбранный по умолчанию цвет фона - PullRequest
0 голосов
/ 25 сентября 2018

Я работаю с таблицей в режиме редактирования.Я использую метод множественного выбора с галочками, как вы можете видеть в встроенном режиме редактирования почты в iOS - он также связан здесь .

Моя проблема в том, что при выборе ячейки фон меняется на 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 голосов
/ 25 сентября 2018

Вы можете удалить этот выделенный цвет в раскадровке.enter image description here

выберите для выбора значение Нет

А также вы можете удалить этот цвет по коду

cell.selectionStyle = .none
0 голосов
/ 25 сентября 2018

Оказывается, что есть особый фон для таблиц, которые используют множественный выбор!

Моим решением было использовать следующий код в моих ячейках:

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

Если вы используете только один выбор, вы можете использовать следующее:

let selectedView = UIView()
selectedView.backgroundColor = cellBackgroundColor
self.selectedBackgroundView = selectedView
self.selectionStyle = .default
0 голосов
/ 25 сентября 2018

Попробуйте это:

func tableView(_ tableView: UITableView, 
   shouldHighlightRowAt indexPath: IndexPath) -> Bool {
     return !tableView.isEditing
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...