isSelected используется не для этого. Ты можешь получать значения isSelected, isHighlighted у ячейки, а также переопределять их представление через didSet. Но настоящее выделение ячейки делается по-другому.
В cellForRow этого делать не надо. Когда ты в первый раз рефрешнул таблицу после обновления dataSource, вызывай tableView.selectRow(at: , animated:, scrollPosition:) для всех ячеек, которые хочешь выделить.