Проблема здесь:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "Identifier", for: indexPath) as? CustomTableViewCell else { return UITableViewCell() }
// Cell settings
return cell
}
Вы возвращаете ячейку, не удалив ее из очереди.
Если вы создаете экземпляр ячейки самостоятельно, TableView не имеет над ней контроля, поэтому он не может повторно использовать ее после обновления источника данных.
Пожалуйста, измените ваш код следующим образом:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Identifier", for: indexPath) as! CustomTableViewCell
// Cell settings
return cell
}
Но также убедитесь, что вы регистрируете ячейку до этого, вероятно, в вашем viewDidLoad.
Что-то вроде:
tableView.register(CustomTableViewCell.self, forCellReuseIdentifier:"Identifier")