Первое : если вы используете подкласс UITableViewController со сборщиком интерфейса, вы захотите отключить выходы делегата и источника данных, которые уже подключены по умолчанию. (Подсказка, посмотрите в инспекторе соединений). Проверьте, даже если у вас есть tableView внутри viewController.
Второй создайте свои классы и убедитесь, что они соответствуют <UITableViewDelegate>
и <UITableViewDataSource>
. Возможно, вам придется объявить этот контракт в файле .h, если вы используете objc.
Третий , В вашем контроллере представления создайте экземпляр этого класса или двух отдельных классов где-то вроде viewDidLoad
, а затем присвойте self.tableView.delegate = myCustomDelegateInstance
и self.tableView.dataSource = myCustomDataSourceInstance
.
Теперь любые вызовы, поступающие через контроллер, будут отправляться вашим пользовательским обработчикам. Довольно простой.
Единственная причина, чтобы действительно сделать это, если у вас 1) очень раздутый контроллер или 2) вам нужно повторно использовать dataSource и делегировать методы где-то еще, и вы хотите избежать повторения кода. В противном случае, возможно, лучше оставить это на месте.