Соглашусь, что UITableViewController лучше не использовать вовсе. Но и Вас я могу понять, хочется быстро накидать экран в сторибоарде и не заморачиваться. Вот какие решения я использовал:
1) для новых приложений ( >= iOS 9) Использовать UIStackView. Идеально подходит для подобного рода задач и не требует лишних телодвижений, что требует uitableview
2) Использование нового подхода, так продвигаемого Apple в swift вместо ООП - протокольно ориентированное программирование.
Объявляете свой протокол для работы с tableView, где объявляете readonly property NSArray *tableViews (кто сказал что на контроллере может быть только одна таблица ;) ), ну или на худой конец myTableView
Объявляете свою категорию/extension в терминологии swift (а лучше их набор) на UIViewController, где используется вышеуказанный протокол и вышеуказанная property.
Дальше в UITableViewController реализовываете этот протокол
- (NSArray <UITableView*> *) tableViews{
return @[self.tableView];
}
аналогично делаете в своем базовом BaseViewController (а нужен ли он теперь вообще? подумайте. хотя лучше оставить, но он по идее теперь станет максимально пустым)
Ну и в viewDidLoad/init вызываете нужные методы из категорий для инициализации
Получилось сумбурно, но я надеюсь Вы уловили месседж