У меня есть 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
}
}