У меня есть UITableViewController
с пользовательским UITableViewCell
, и в каждой ячейке есть UISwitch
внутри.
Необходимо обновить информацию о моей таблице (строка в заголовке), когда любой из этих переключателей включается / выключается (необходимо отображать количество переключателей в заголовке раздела).
Я не уверен в iOS и UIKit, но я уже нашел 2 возможных решения:
- реализовать шаблон делегата между контроллером ячейки и таблицы
- написать логику обновления внутри функции
tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
В первом решении мой TableViewController
соответствует
protocol TableViewDelegate {
func reloadTable()
}
, которые обновляют свой внутренний счетчик включений - и обновляют раздел заголовка в функции tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String?
- вызывая
DispatchQueue.main.async{
self.tableView.reloadData()
}
Очевидно, что мой обычай UITableViewCell
имеет ссылку на делегата TableViewController
и вызывает его reloadTable()
.
Второе решение - это возможность получить информацию о каждой ячейке в методе cellForRowAt indexPath
. Я обнаружил, что эта функция вызывается не только при рисовании таблицы, но и при взаимодействии с компонентом в ячейке.
Так мне нужно реализовать подсчет в функции cellForRowAt indexPath
? Или первое решение с шаблоном делегата является хорошим?