UINavigationBar с TableView и сегментированным управлением внутри UITabBar - PullRequest
0 голосов
/ 28 августа 2010

У меня есть приложение с вкладками.На второй вкладке был развернут список таблиц с помощью контроллера навигации.Я также хочу реализовать сегментированный элемент управления внутри панели инструментов, который показывает различные записи таблицы в соответствии с выбранным переключателем в сегментном элементе управления.Я немного запутался, как это реализовать?

Снимок экрана - alt text

Это представление во втором контроллере вкладок - экземпляр универсального UIViewController.Синий фон - это UIView, который содержит сегментированный элемент управления (1,2,3,4).Стальная синяя панель навигации в верхней части представляет собой имитированный элемент интерфейса от Interface Builder.Мне нужно поместить контроллер навигации таким образом, чтобы он имел вид таблицы списка, который изменялся в зависимости от переключателя, выбранного в пользовательском интерфейсе сегментированного управления.

У меня есть следующие опции

  1. Добавить UINavController в качестве корневого контроллера для второй вкладки непосредственно с представлением таблицы внутри.В таком случае, как мне разместить UIToolbar с сегментированным элементом управления?

  2. Я добавляю UISegmentedControl как часть представления контроллера представления второй вкладки и добавляю представление таблицы на основе навигации в качестве другого элемента в это представление,Это выполнимо?Как я могу добавить контроллер на основе навигации в UIView и контролировать кадр, чтобы он не покрывал UIToolBar.

Надеюсь, у меня есть смысл.Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения.Благодаря.

Ответы [ 3 ]

2 голосов
/ 31 августа 2010

Вот как я этого добился. В IB, в MainWindow.xib, где у меня есть tabbarController, я сделал класс идентификатора второй вкладки для UINavigationConrtroller. Затем я сделал основной вид Controller для второй вкладки с сегментированным элементом управления и табличным представлением как rootViewController для NavigationController. Это функционирование именно так, как я хотел. Спасибо всем за помощь.

0 голосов
/ 28 августа 2010

В соответствии с вашими требованиями вы не можете избежать работы с кодом - я имею в виду, что вы не можете установить все по соединениям в IB.

Я бы создал UIViewController (назовем его контейнером), который будет содержатьсегментированный элемент управления и контроллер навигации.

  • Вы должны установить вторую вкладку как контроллер представления и указать ее на контейнер.
  • Представление контейнера (XIB, если хотите) должносодержит сегментированный контроллер, который будет выровнен по низу, и containerView, который заполнит остальную часть представления и будет иметь свой IBOutlet.
  • Контейнер также должен иметь элемент контроллера навигации, который будет инициирован в viewDidLoad.
  • Представление таблицы, о котором вы говорите, также должно быть построено на собственной XIB и иметь собственный контроллер представления, который будет установлен в качестве корневого контроллера представления для контроллера навигации ...

Скажи мне, если это слишком запутанно / сложно ...

0 голосов
/ 28 августа 2010

вы можете добавить UINavigationController вместо UIViewController в UITabbarcontroller и поместить свой UIViewController с UISegmentControl в UInavigationController, который добавляет в UITabbarcontroller

в чтении это выглядит сбивающим с толку, но попробуйте реализовать его работу

Шаг 1: xcode -> новый проект -> приложение на вкладке

Шаг 2: откройте xib главного окна, выберите tabbarcontroller и откройте инспектор. в том, что вы можете увидеть список контроллеров представления изменить свой класс на uinavigationController. если вам нужен uinavigationController во второй вкладке, то измените только класс вкладки secong на uinavigationController

шаг 3: создайте новый контроллер uiview. откройте его xib и добавьте к нему uitableview и контроль сегмента.

Setp 4: теперь разверните tabbarcontroller и проверьте, что у вашей второй вкладки есть навигационный контроллер, теперь добавьте ваш uiviewcontroller в viewcontroller навигационного контроллера

...