Очевидно, что вы не можете использовать UITabBarController от UIKit.
Вам необходимо определить собственное решение.
Возможное решение:
- поставить вверху экрана UIScrollBar
- создание внутри полосы прокрутки некоторого UIButton типа custom и изображения, которое вы определяете для каждой кнопки
- связывает каждую кнопку UIB с другим UIView (или другим UIViewController):
например Button1 -> View1; Button2 -> View2
- каждый раз, когда вы нажимаете на кнопку, просто замените представление под панелью вкладок выбранным.
В пункте [3], почему лучше использовать контроллер представления вместо представления? потому что использование контроллера представления позволяет вам отделить логическую функциональность для каждой из функций панели вкладок, вместо того, чтобы помещать все в один контроллер представления.
По сути, у вас есть один «основной» контроллер вида, который создает представление прокрутки (с кнопками) и содержит другое подпредставление (изначально пустое), называемое «контейнер», которое займет оставшуюся часть экрана.
Теперь, когда вы нажимаете на каждую кнопку, вы будете выделять-инициализировать соответствующий ей контроллер представления (назовем его «child1»), вы загрузите его представление («child1.view»), а затем добавите его как подпредставление «контейнера». ":
[containter addSubview:child1.view]
(не забудьте удалить существующее подпредставление в контейнере раньше).
Важное примечание: единственный контроллер представления, который будет реагировать на такие события, как поворот интерфейса, будет только «основным», а не «дочерним». Таким образом, управление ориентацией интерфейса по-прежнему должно выполняться «main», и все события изменения ориентации должны отправляться вашим кодом в дочерний контейнер.
Преимущество этого подхода состоит в том, что функциональность одного дочернего элемента может быть полностью реализована в его контроллере представления, и «main» будет работать так же, как диспетчер контейнеров и вкладок, без основной логической функциональности.
Имеет смысл перенести эту логику на контроллер представления более высокого уровня для высокой возможности повторного использования, но это будет довольно сложно.