#ios #uitableview #uinavigationcontroller #uitabbarcontroller
#iOS #uitableview #uinavigationcontroller #uitabbarcontroller
Вопрос:
Я хочу добавить UITabBarController
в качестве корневого представления моего контроллера UINavigation. Цель этого в том, что я хочу создать аналогичную навигацию в Facebook app: затем пользователь выбирает контакт на вкладке «Контакты» — просмотр с информацией о пользователе не имеет панели вкладок.
Итак, у меня есть навигационный контроллер, панель вкладок в качестве корневого представления или it и пара TableViewControllers внутри этого UITabBarController
.
У меня есть две основные проблемы с этим:
- Я не могу назначить заголовок для панели навигации для корневых представлений панели вкладок. Если я открою контактные данные, у меня появится заголовок панели навигации и нет панели вкладок (как я и хотел). Но если я выбираю Контакты или Избранное — эти представления имеют пустой заголовок панели навигации. Я пытался установить его на viewDidLoad и viewDidApper без какого-либо успеха
- Еще более серьезная проблема. Когда я нажимаю «Избранное», вставки в виде таблицы нарушаются. первая ячейка находится под панелью навигации. Первый загруженный tableview (в моем случае Contact) отображается правильно. Настройка вставок прокрутки выполняется
YES
для обоих tableViews.
Обновить:
Раскадровка решения (обратите внимание, что свойство «Скрыть нижнюю панель при нажатии» переключено на ДА).
Комментарии:
1. Можете ли вы организовать их наоборот, где панель вкладок vc содержит vcs навигации? Это, безусловно, более распространенная схема.
2. Я хотел скрыть панель вкладок при нажатии, но Яануссим ответил, как это сделать
Ответ №1:
Я также боролся с проблемой UITabBarController UINavigationController. Когда UITabBarController содержался в UINavigationController, вставки содержимого вели себя действительно странно.
Я бы предложил использовать навигационные контроллеры внутри UITabBarController, и когда будет нажат следующий контроллер, установите для ‘hidesBottomBarWhenPushed’ на этом контроллере значение YES.
Это также решило бы проблему с настройкой заголовка панели навигации, поскольку навигационный контроллер ближе к контроллеру просмотра. Вы можете просто использовать self.navigationItem.
Если вы оставите это для текущей настройки — UITabController, содержащейся в UINavigationController, тогда вам необходимо изменить navigationItem на контроллерах TabBarController (self.TabBarController.navigationItem). Обратите внимание, что лучшим местом для этого было бы в view controllers ‘viewWillAppear’ для каждого контроллера, содержащегося в UITabBarController, поскольку они используют один элемент навигации.