Swift - изменить цвет фона в tableView.selectRow - PullRequest
0 голосов
/ 16 марта 2020

У меня есть tableView, который имеет все правильные поведения, но я пытаюсь изменить цвет фона выбранной строки с серого по умолчанию на зеленый, и tableView ведет себя странно.

Текущее поведение с цветом по умолчанию: страница загружается, и первая строка первого раздела таблицы выбирается по умолчанию (серый фон). Если пользователь щелкает по другой строке, первая отменяется, а вторая получает серый фон. Этот код:

private var scrolledToItitialSelection = false
didSet {
    tableView.reloadData()
    if let selected = self.model.selectedRow { // selectedRow returns an indexPath
        tableView.selectRow(at: selected, animated: true, scrollPosition: scrolledToInitialSelection ? .none : .middle

        scrolledToItitialSelection = true
    }
}

Я пытаюсь добиться точно такого же поведения, только с другим цветом фона. Но с помощью приведенного ниже кода tableView загружается, и первая строка первого раздела таблицы выбирается, как и ожидалось, как и вторая строка второго раздела. Кроме того, если щелкнуть строку ниже выбранной по умолчанию, теперь у меня будет 4 выбранных строки: две в первом разделе, два во втором.

private var scrolledToItitialSelection = false
didSet {
    tableView.reloadData()
    if let selected = self.model.selectedRow { // selectedRow returns an indexPath
        tableView.selectRow(at: selected, animated: true, scrollPosition: scrolledToInitialSelection ? .none : .middle
        let selectedCell:UITableViewCell = tableView.cellForRow(at: selected)!
        selectedCell.contentView.backgroundColor = .green
        selectedCell.accessoryView.backgroundColor = .green
        scrolledToItitialSelection = true
    }
}

1 Ответ

1 голос
/ 17 марта 2020

Цвет выделения UITableViewCell - это цвет фона для подпредставления ячейки.

Вы можете попробовать это:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

/// dequeueReusableCellWithIdentifier...
let bgColorView = UIView()
bgColorView.backgroundColor = UIColor.green
cell.selectedBackgroundView = backgroundColorView
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...