Отображение панели вкладок в верхней части экрана в проекте tabbarcontroller с прокруткой - PullRequest
0 голосов
/ 18 марта 2012

Я должен реализовать приложение на основе панели вкладок. Есть два требования

  1. Элемент панели вкладок будет больше 10, и они должны прокручиваться, а не показываться на следующей странице. Я получил ссылку на это и работаю над этим. Но я не получаю никакой отправной точки для этого второго.
  2. Он должен отображаться (панель вкладок) вверху экрана, а не внизу, в основном, как это реализовано в приложении, как показано в ссылке http://appworld.blackberry.com/webstore/content/screenshots/21999/?lang=en.

Так что, если у кого-то есть идея или код, пожалуйста, дайте мне знать и помогите мне.

1 Ответ

1 голос
/ 18 марта 2012

Очевидно, что вы не можете использовать UITabBarController от UIKit.

Вам необходимо определить собственное решение.

Возможное решение:

  1. поставить вверху экрана UIScrollBar
  2. создание внутри полосы прокрутки некоторого UIButton типа custom и изображения, которое вы определяете для каждой кнопки
  3. связывает каждую кнопку UIB с другим UIView (или другим UIViewController): например Button1 -> View1; Button2 -> View2
  4. каждый раз, когда вы нажимаете на кнопку, просто замените представление под панелью вкладок выбранным.

В пункте [3], почему лучше использовать контроллер представления вместо представления? потому что использование контроллера представления позволяет вам отделить логическую функциональность для каждой из функций панели вкладок, вместо того, чтобы помещать все в один контроллер представления. По сути, у вас есть один «основной» контроллер вида, который создает представление прокрутки (с кнопками) и содержит другое подпредставление (изначально пустое), называемое «контейнер», которое займет оставшуюся часть экрана. Теперь, когда вы нажимаете на каждую кнопку, вы будете выделять-инициализировать соответствующий ей контроллер представления (назовем его «child1»), вы загрузите его представление («child1.view»), а затем добавите его как подпредставление «контейнера». ":

[containter addSubview:child1.view]
(не забудьте удалить существующее подпредставление в контейнере раньше). Важное примечание: единственный контроллер представления, который будет реагировать на такие события, как поворот интерфейса, будет только «основным», а не «дочерним». Таким образом, управление ориентацией интерфейса по-прежнему должно выполняться «main», и все события изменения ориентации должны отправляться вашим кодом в дочерний контейнер. Преимущество этого подхода состоит в том, что функциональность одного дочернего элемента может быть полностью реализована в его контроллере представления, и «main» будет работать так же, как диспетчер контейнеров и вкладок, без основной логической функциональности.

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

...