Я прочитал некоторые объяснения здесь о том, почему это происходит, но я не могу найти решение для моего случая, которое может быть очень простым.
У меня есть UITableViewController
, который имеет 2 раздела и 20 строк в каждом разделе.
Я хочу добавить UISwitcher
во второй строке, поэтому я реализовал следующее:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as? SettingsCell else {
return UITableViewCell()
}
switch indexPath.row {
case 2: cell.addSwitcher()
default: break
}
return cell
}
Все работает как положено, пока я не прокручиваю вверх и вниз, и через некоторое время у меня будут переключатели в каждом ряду.
Есть ли способ освободить или выполнить очистку в dequeueReusableCell
или я что-то здесь упускаю?
Вот моя addSwitcher()
функция
public func addSwitcher() {
accessoryView = switcher
switcher.addTarget(self, action: #selector(switcherDidChange(switcher:)), for: .valueChanged)
hasSwitcher = true
}