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