2014-08-28 2 views
3

У меня есть UIView с подключенным UIViewController. Как subview (построенный через конструктор интерфейса), у меня есть UITableView. Я хотел бы добавить элемент управления обновлением в этот UITableView, но для этого мне нужно получить контроллер по умолчанию за табличным представлением.Получить UITableViewController от UITableView

Есть ли способ UITableView, с которым я могу получить UITableViewController, с которым он связан?

+0

Существует путаница между UIView и UIViewController. UITableView не имеет связанного с ним экземпляра UITableViewController. У него просто есть делегат и источник данных, которые часто являются контроллером представления. UITableViewController - это просто удобный класс для меньшей настройки вашего UIViewController. Но он по существу остается UIViewController. – PatrickNLT

ответ

3

К сожалению, нет способа получить доступ к контроллеру UITableView без подкласса и установить делегат после создания экземпляра (но я настоятельно рекомендую против этого). Лучше всего было бы установить контроль обновления в UITableViewController (по возможности, в коде), который вы связали с табличным представлением в IB.

Чтобы добавить элемент управления обновлением в UITableView, который еще не контролируется UITableViewController, вы можете сделать следующее.

Сначала создайте UITableViewController для управления элементом управления.

UITableViewController *tableViewController = [[UITableViewController alloc] init]; 
tableViewController.tableView = self.tableView; 

Создание элемента управления, добавить цель, которая управляет состоянием UITableView в после обновления, а затем назначить его на только что созданный tableViewController.

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init]; 
[refreshControl addTarget:self action:@selector(refreshControlValueChanged:) forControlEvents:UIControlEventValueChanged]; 
tableViewController.refreshControl = refreshControl; 

Последнее, что нужно сделать, это реализовать refreshControlValueChanged: в вашем UIViewController.

+0

У меня нет UITableViewController, связанного в IB. У меня есть пользовательский UIViewController, связанный с rootView, но представление таблицы является подвидью этого корневого представления. Как я буду развиваться в этот момент? – steventnorris

+0

Получил это. Это немного сложнее. Обновление моего ответа сейчас ... –

+0

Я предполагаю, что ваш UITableView имеет набор делегатов для источника данных и UITableViewDelegate. Если вы установили это в ViewController, у вас уже есть ссылка на него (через делегата). – Anand

Смежные вопросы