Насколько я понимаю, вы знаете, что в качестве контроллеров UITabBarController можно использовать UINavigationControllers. Почему же тогда не использовать навигационные контроллеры?
Это должно быть полностью то, что вы хотите сделать: создать таблицы в коде или связать его как выходы с помощью Interface Builder, так как вы можете использовать UIViewController или UITableViewController (который наследуется от UIViewController) в качестве пользователя root и подключены к стеку NavController.
Предполагается, что вы используете XCode 4, вот ссылка на учебник
UPD:
для представлений верхнего и нижнего колонтитула всегда лучше использовать свойства tableHeaderView и tableFooterView объекта UITableView. Тогда вам не нужно рассчитывать поля и обновлять компоновку вида вручную, поскольку это происходит автоматически.
Что касается навигации, общепринятой практикой является установка контроллера, содержащего таблицу, в качестве самого делегата таблицы, а затем использовать метод
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
когда вы выбираете одну из ячеек таблицы, вызывается этот метод, и вы можете создать экземпляр следующего контроллера представления, предварительно сконфигурировать его и затем отправить в стек навигации. Кнопка Назад приходит автоматически - и все готово. Если у вас есть таблица в следующем контроллере навигации, будьте осторожны при вставке копий методов из предыдущего, т. Е. Если вы указали количество строк в
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
Ваше приложение будет аварийно завершено.