Класс UITabBarController реализует специализированный контроллер представления, который управляет интерфейсом выбора в стиле радио. Этот интерфейс панели вкладок отображает вкладки в нижней части окна для выбора между различными режимами и для отображения представлений для этого режима. Этот класс обычно используется как есть, но может быть разделен на подклассы в iOS 6 и позже.

UITabBarControllerреализует специализированный контроллер представления, который управляет стилем радиосвязи интерфейс выбора. Этот интерфейс панели вкладок отображает вкладки в нижней части окна для выбора между различными режимами и для отображения представлений для этого режима. Этот класс обычно используется как есть, но может быть разделен на подклассы в iOS 6 и позже.

Каждая вкладка интерфейса контроллера панели вкладок связана с настраиваемым контроллером представления. Когда пользователь выбирает конкретную вкладку, контроллер панели вкладок отображает корневой вид соответствующего контроллера представления, заменяя любые предыдущие представления. (При касаниях пользователя всегда отображается корневой вид вкладки, независимо от того, какая вкладка была выбрана ранее. Это верно даже в том случае, если вкладка уже была выбрана.) Поскольку выбор вкладки заменяет содержимое интерфейса, тип интерфейса, управляемый в каждом из них. Вкладка не обязательно должна быть похожей. Фактически, интерфейсы панели вкладок обычно используются либо для представления различных типов информации, либо для представления одной и той же информации с использованием совершенно другого стиля интерфейса. На рисунке 1 показан интерфейс панели вкладок, представленный приложением Clock, каждая вкладка которого представляет тип информации, основанной на времени.

Вы никогда не должны получать доступ к представлению панели вкладок контроллера панели вкладок напрямую. Чтобы настроить вкладки контроллера панели вкладок, вы назначаете контроллеры представления, которые предоставляют корневое представление для каждой вкладки, для viewControllersсобственности. Порядок, в котором вы указываете контроллеры представления, определяет порядок, в котором они появляются на панели вкладок. При настройке этого свойства вам также следует присвоить значение selectedViewControllerуказывает, какой контроллер представления выбран изначально. (Вы также можете выбрать контроллеры представления по индексу массива, используя selectedIndex. При вставке представления контроллера панели вкладок (полученного с использованием унаследованного view) в окне вашего приложения, контроллер панели вкладок автоматически выбирает этот контроллер представления и отображает его содержимое, изменяя его размер как необходимо соответствовать интерфейсу панели вкладок.

Элементы панели вкладок настраиваются через соответствующий им контроллер представления. Чтобы связать элемент панели вкладок с контроллером представления, создайте новый экземпляр UITabBarItem, настройте его соответствующим образом для контроллера представления и назначьте его tabBarItemсобственности. Если вы не предоставляете пользовательский элемент панели вкладок для своего контроллера представления, контроллер представления создает элемент по умолчанию, не содержащий изображения и текста из titleсобственности.

Когда пользователь взаимодействует с интерфейсом панели вкладок, объект контроллера панели вкладок отправляет уведомления о взаимодействиях своему делегату. Делегат может быть любым указанным вами объектом, но он должен соответствовать UITabBarControllerDelegateпротокол . Вы можете использовать делегата для предотвращения выбора определенных элементов панели вкладок и для выполнения дополнительных задач при выборе вкладок. Вы также можете использовать делегата для отслеживания изменений в панели вкладок, которые вносит контроллер навигации More, который более подробно описан в Дополнительный контроллер навигации.

Для получения дополнительной информации об использовании контроллеров панели вкладок для создания пользовательского интерфейса см. Просмотреть руководство по программированию контроллера для iOS.

Представления контроллера панели вкладок

Потому что класс UITabBarController наследуется от UIViewController">класс, контроллеры панели вкладок имеют свое собственное представление, которое доступно через видсобственности. Представление для контроллера панели вкладок - это просто контейнер для представления панели вкладок и представления, содержащего ваш пользовательский контент. Представление панели вкладок предоставляет пользователю элементы управления выбором и состоит из одного или нескольких элементов панели вкладок. На рисунке 2 показано, как эти представления собраны для представления общего интерфейса панели вкладок. Хотя элементы в панели вкладок и представлениях панели инструментов могут изменяться, представления, управляющие ими, не изменяются. Изменяется только пользовательское представление содержимого, чтобы отобразить контроллер представления для выбранной в данный момент вкладки.

enter image description here

Более навигационный контроллер

Панель вкладок имеет ограниченное пространство для отображения ваших пользовательских элементов. Если вы добавите шесть или более пользовательских контроллеров представления к контроллеру панели вкладок, контроллер панели вкладок отображает только первые четыре элемента плюс стандартный элемент Дополнительно на панели вкладок. При нажатии элемента «Дополнительно» открывается стандартный интерфейс для выбора оставшихся элементов.

Интерфейс для стандартного элемента «Дополнительно» включает кнопку «Редактировать», которая позволяет пользователю перенастроить панель вкладок. По умолчанию пользователю разрешено переставлять все элементы на панели вкладок. Если вы не хотите, чтобы пользователь изменял некоторые элементы, вы можете удалить соответствующие контроллеры представления из массива в customizableViewControllersсобственности.

Государственное Сохранение

В iOS 6 и более поздних версиях, если вы присваиваете значение для этого контроллера restorationIdentifierсохраняет ссылку на контроллер представления на выбранной вкладке. Во время восстановления он использует ссылку для выбора вкладки с тем же контроллером представления.

При сохранении контроллера панели вкладок присвойте уникальные идентификаторы восстановления дочерним контроллерам представления, которые вы хотите сохранить. Если пропустить идентификатор восстановления из дочернего контроллера представления, эта вкладка вернется к своей конфигурации по умолчанию. Хотя контроллер панели вкладок сохраняет свои вкладки в том же порядке, в котором они перечислены в viewControllers, порядок сохранения на самом деле не имеет значения. Ваш код отвечает за предоставление нового контроллера панели вкладок во время следующего цикла запуска, поэтому ваш код может корректировать порядок вкладок по мере необходимости. Система сохранения состояния восстанавливает содержимое каждой вкладки на основе назначенного идентификатора восстановления, а не на основе позиции вкладки.

Для получения дополнительной информации о том, как работает сохранение и восстановление состояния, см. Руководство по программированию приложений для iOS.