В моем представлении таблицы есть элементы, отсортированные по некоторым типам: TypeA, TypeB и TypeC.Изменение цвета выбора UITableViewCell, на основе которого была нажата ячейка
Я хочу, чтобы, когда я нажимаю на ячейку с TypeA, чтобы изменить цвет выделения на красный, когда я набираю TypeB для изменения цвета на синий и при нажатии на TypeC, чтобы изменить цвет на Желтый.
Прямо сейчас я придумал этот код:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
guard let mode = dataSource.selectedObject else {
fatalError("willDisplayCell, but no selected row?")
}
let type = ModeType(rawValue: mode.type)!
let selectionColor = UIView() as UIView
selectionColor.backgroundColor = type.color()
cell.selectedBackgroundView = selectionColor
}
Моя проблема с этим состоит в том, что willDisplayCell
вызывается, когда я начинаю мое приложение и мой источник данных пуст, поэтому я получаю фатальную ошибку.
Как я могу это преодолеть? Может быть, использовать флаг для этого, только когда был вызван didSelectRowAtIndexPath
.
Или есть другой способ добиться того, что я хочу?
Или вы можете поместить свою логику изменения цвета, когда клетка фактически выбрана т.е. в didSelectRowAtIndexPath –