Откуда вы взяли этот -numberForRowsInSection:
метод? Насколько я (и документация) знаю, он не существует и никогда не существовал как метод UITableView. Гадание ни к чему вас не приведет, тем более изобретать методы из воздуха.
Возможно, вам следует ознакомиться с некоторыми учебными пособиями, в которых рассматриваются основы использования UITableView, прежде чем пытаться сделать это. Я сомневаюсь, что кто-то потратит время, чтобы написать вам полный класс, чтобы сделать это и поместить его в ответ, и в конечном итоге вам будет намного лучше, если вы просто не попытаетесь скопировать / вставить код, который ты не понимаешь Существует много документации и примеров, которые охватывают UITableView, и это только с учетом того, что доступно от Apple - UITableView - это такой часто используемый класс, что поиск в Google чего-то вроде «UITableView tutorial» даст вам страницы и страницы результатов.
Я дам вам краткий обзор того, что вам нужно будет сделать, хотя:
1. Конечно, вы можете начать с шаблона UITableViewController в XCode и начать настраивать его в соответствии с вашими требованиями ... два раздела, сколько строк в разделе и т. Д., Определяя его на основе некоторых объектов уровня модели, если это необходимо.
Вам нужно будет либо создать собственный подкласс UITableViewCell, либо неплохо настроить макет UITableViewCell по умолчанию (по крайней мере, добавив подвид UISwitch) при создании новых объектов ячейки в tableView:cellForRowAtIndexPath:
.
UISwitch должен быть настроен на отправку сообщения вашему контроллеру представления, когда значение переключателя изменяется с использованием -[UIControl addTarget:action:forControlEvents:]
для события UIControlEventValueChanged
.
В вашей реализации метода действия для этого изменения значения переключателя вам потребуется реализовать логику, чтобы определить, следует ли добавлять или вычитать строки, а затем фактически добавлять или вычитать строки. Вы можете использовать beginUpdates
/ endUpdates
, insertRowsAtIndexPaths:withRowAnimation:
и deleteRowsAtIndexPaths:withRowAnimation:
, чтобы иметь хорошее поведение плавной анимации строк вместо простого вызова reloadData
.