UITabBarController
Наследование
-
NSObject
-
UIResponder
-
UIViewController
-
UITabBarController
-
NSObject
-
UIResponder
-
UIViewController
-
UITabBarController
Соответствует
Оператор импорта
Swift
import UIKit
Objective C
@import UIKit;
Доступность
Доступный в iOS 2.0 и позже.
UITabBarController
класс реализует специализированный контроллер представления, управляющий интерфейсом выбора радио-стиля. Этот интерфейс панели вкладок выводит на экран вкладки у основания окна для выбора между различными режимами и для отображения представлений для того режима. Этот класс обычно используется как есть, но может быть разделен на подклассы в iOS 6 и позже.
Каждая вкладка интерфейса контроллера панели вкладок связана с пользовательским контроллером представления. Когда пользователь выбирает определенную вкладку, контроллер панели вкладок выводит на экран корневое представление соответствующего контроллера представления, заменяя любые предыдущие представления. (Пользователь касается, всегда выводят на экран корневое представление вкладки, независимо от которой была ранее выбрана вкладка. Даже если вкладка была уже выбрана, это - истина.), Поскольку выбор вкладки заменяет содержание интерфейса, тип интерфейса, которым управляют на каждой вкладке, не должен быть подобным всегда. Фактически, интерфейсы панели вкладок обычно используются или чтобы представить различные типы информации или представить ту же информацию с помощью абсолютно различного стиля интерфейса. Рисунок 1 показывает интерфейс панели вкладок, представленный приложением Часов, каждая вкладка которого представляет тип базируемой информации времени.
Вы никогда не должны получать доступ к представлению панели вкладок контроллера панели вкладок непосредственно. Для конфигурирования вкладок контроллера панели вкладок Вы присваиваете контроллеры представления, обеспечивающие корневое представление для каждой вкладки к viewControllers
свойство. Порядок, в котором Вы указываете контроллеры представления, определяет порядок, в котором они появляются в панели вкладок. При установке этого свойства необходимо также присвоить значение selectedViewController
свойство для указания, какой контроллер представления выбран первоначально. (Можно также выбрать контроллеры представления индексом массива с помощью selectedIndex
свойство.), Когда Вы встраиваете представление контроллера панели вкладок (полученное использование наследованного view
свойство) в Вашем окне приложения, контроллер панели вкладок автоматически выбирает тот контроллер представления и выводит на экран его содержание, изменяя размеры их по мере необходимости для адаптации интерфейсу панели вкладок.
Элементы панели вкладок сконфигурированы через их соответствующий контроллер представления. Для соединения элемента панели вкладок с целью контроллер создайте новый экземпляр UITabBarItem
класс, сконфигурируйте его соответственно для контроллера представления и присвойте его контроллеру представления tabBarItem
свойство. Если Вы не обеспечиваете пользовательский элемент панели вкладок для своего контроллера представления, контроллер представления создает элемент по умолчанию, содержащий изображение и текст от контроллера представления title
свойство.
Поскольку пользователь взаимодействует с интерфейсом панели вкладок, объект контроллера панели вкладок отправляет уведомления о взаимодействиях его делегату. Делегат может быть любым объектом, который Вы указываете, но должны приспособить UITabBarControllerDelegate
протокол. Можно использовать делегата, чтобы препятствовать тому, чтобы определенные элементы панели вкладок были выбраны и выполнили дополнительные задачи, когда выбраны вкладки. Можно также использовать делегата для наблюдения изменений к панели вкладок, сделанных Большим количеством контроллера навигации, описанного более подробно в Большем количестве Контроллера Навигации.
Для получения дополнительной информации об использовании контроллеров панели вкладок для создания пользовательского интерфейса см. Руководство по программированию Контроллера Представления для iOS.
Представления контроллера панели вкладок
Поскольку UITabBarController
класс наследовался от UIViewController
класс, контроллеры панели вкладок имеют свое собственное представление, которое доступно через view
свойство. Представление для контроллера панели вкладок является просто контейнером для представления панели вкладок и представления, содержащего Ваше пользовательское содержание. Представление панели вкладок предоставляет средства управления выбором пользователю и состоит из одного или более элементов панели вкладок. Рисунок 2 показывает, как эти представления собраны для представления полного интерфейса панели вкладок. Несмотря на то, что элементы в панели вкладок и представлениях панели инструментов могут измениться, представления, управляющие ими, не делают. Только пользовательское довольное представление изменяется для отражения контроллера представления для в настоящее время выбираемой вкладки.
Можно использовать контроллеры навигации или пользовательские контроллеры представления как корневой контроллер представления для вкладки. Если корневой контроллер представления является контроллером навигации, контроллер панели вкладок вносит дальнейшие корректировки в размер выведенного на экран содержания навигации так, чтобы это не перекрывало панель вкладок. Любые представления, которые Вы выводите на экран в интерфейсе панели вкладок, должны поэтому иметь их autoresizingMask
набор свойств для изменения размеров представления соответственно при любых условиях.
Больше контроллера навигации
Панель вкладок имеет ограниченное пространство для отображения Ваших пользовательских элементов. Если Вы добавляете шесть или больше пользовательских контроллеров представления к контроллеру панели вкладок, контроллер панели вкладок выводит на экран только первые четыре элемента плюс стандарт Больше элемента на панели вкладок. Ответвление Большего количества элемента переводит стандартный интерфейс в рабочее состояние для выбора остающихся элементов.
Интерфейс для стандарта, Больше элемента включает кнопку Edit, позволяющую пользователю реконфигурировать панель вкладок. По умолчанию пользователю разрешают перестроить все элементы на панели вкладок. Если Вы не хотите, чтобы пользователь изменил некоторые элементы, тем не менее, можно удалить надлежащие контроллеры представления из массива в customizableViewControllers
свойство.
Сохранение состояния
В iOS 6 и позже, если Вы присваиваете значение этому контроллеру представления restorationIdentifier
свойство, это сохраняет ссылку на контроллер представления на выбранной вкладке. Во время восстановления это использует ссылку для выбора вкладки с тем же контроллером представления.
При сохранении контроллера панели вкладок присвойте уникальные идентификаторы восстановления дочерним контроллерам представления, которые Вы хотите сохранить. Исключение идентификатора восстановления от дочернего контроллера представления заставляет ту вкладку возвращаться к ее конфигурации по умолчанию. Несмотря на то, что контроллер панели вкладок сохраняет свои вкладки в том же порядке, что они перечислены в viewControllers
свойство, порядок сохранения фактически не важен. Ваш код ответственен за обеспечение нового контроллера панели вкладок во время следующего цикла запуска, таким образом, Ваш код может скорректировать порядок вкладок по мере необходимости. Система сохранения состояния восстанавливает содержание каждой вкладки на основе присвоенного идентификатора восстановления, не на основе позиции вкладки.
Для получения дополнительной информации, о как сохранение состояния и реставрационные работы, см. Руководство по программированию Приложения для iOS.
-
delegate
СвойствоДелегат контроллера панели вкладок объект.
Объявление
Swift
unowned(unsafe) var delegate: UITabBarControllerDelegate?
Objective C
@property(nonatomic, assign) id< UITabBarControllerDelegate > delegate
Обсуждение
Можно использовать объект делегата отследить изменения в элементах в панели вкладок и контролировать выбор вкладок. Объект делегата, который Вы обеспечиваете, должен соответствовать
UITabBarControllerDelegate
протокол. Значение по умолчанию для этого свойстваnil
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 2.0 и позже.
-
tabBar
СвойствоПредставление панели вкладок связалось с этим контроллером. (только для чтения)
Объявление
Swift
var tabBar: UITabBar { get }
Objective C
@property(nonatomic, readonly) UITabBar *tabBar
Обсуждение
Вы никогда не должны пытаться управлять
UITabBar
сам объект хранится в этом свойстве. При попытке для этого, представление панели вкладок выдает исключение. Для конфигурирования элементов для интерфейса панели вкладок необходимо вместо этого присвоить один или несколько пользовательских контроллеров представленияviewControllers
свойство. Панель вкладок собирает необходимые элементы панели вкладок из контроллеров представления, которые Вы указываете.Представление панели вкладок, предоставленное этим свойством, только для ситуаций, где Вы хотите вывести на экран лист действия с помощью
showFromTabBar:
методUIActionSheet
класс.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 3.0 и позже.
-
viewControllers
СвойствоМассив корневых контроллеров представления выведен на экран интерфейсом панели вкладок.
Объявление
Swift
var viewControllers: [AnyObject]?
Objective C
@property(nonatomic, copy) NSArray *viewControllers
Обсуждение
Значение по умолчанию этого свойства
nil
. При конфигурировании контроллера панели вкладок можно использовать это свойство для указания содержания для каждой вкладки интерфейса панели вкладок. Порядок контроллеров представления в массиве соответствует порядку дисплея в панели вкладок. Таким образом контроллер в индексе 0 соответствует крайней левой вкладке, контроллеру в индексе 1 следующая вкладка вправо, и т.д. Если существует больше контроллеров представления, чем может поместиться в панель вкладок, контроллерами представления в конце массива управляет Больше контроллера навигации, самостоятельно не включенного в этот массив.При изменении значения этого свойства во время выполнения контроллер панели вкладок демонтирует все старые контроллеры представления прежде, чем установить новые. Элементы панели вкладок для новых контроллеров представления сразу выведены на экран и не анимированы в позицию. При изменении контроллеров представления контроллер панели вкладок помнит объект контроллера представления, ранее выбранный и пытающийся повторно выбрать его. Если выбранный контроллер представления больше не присутствует, он пытается выбрать контроллер представления в том же индексе в массиве как предыдущий выбор. Если тот индекс недопустим, он выбирает контроллер представления в индексе 0.
Установка этого свойства также устанавливает
customizableViewControllers
свойство к тому же набору контроллеров представления.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
Устанавливает корневые контроллеры представления контроллера панели вкладок.
Объявление
Swift
func setViewControllers(_
viewControllers
: [AnyObject], animatedanimated
: Bool)Objective C
- (void)setViewControllers:(NSArray *)
viewControllers
animated:(BOOL)animated
Параметры
viewControllers
Массив пользовательских контроллеров представления для отображения в интерфейсе панели вкладок. Порядок контроллеров представления в этом массиве соответствует порядку дисплея в панели вкладок, с контроллером в индексе 0, представляющем крайнюю левую вкладку, контроллер в индексе 1 следующая вкладка вправо, и т.д.
animated
Если
YES
true
, элементы панели вкладок для контроллеров представления анимированы в позицию. ЕслиNO
false
, изменения в элементах панели вкладок сразу отражаются.Обсуждение
При присвоении нового набора контроллеров представления во время выполнения контроллер панели вкладок демонтирует все старые контроллеры представления прежде, чем установить новые. При изменении контроллеров представления контроллер панели вкладок помнит объект контроллера представления, ранее выбранный и пытающийся повторно выбрать его. Если выбранный контроллер представления больше не присутствует, он пытается выбрать контроллер представления в том же индексе в массиве как предыдущий выбор. Если тот индекс недопустим, он выбирает контроллер представления в индексе 0.
Этот метод также устанавливает значение
customizableViewControllers
свойство к содержаниюviewControllers
параметр.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
customizableViewControllers
СвойствоПодмножество контроллеров представления, которыми управляет этот контроллер панели вкладок, который может быть настроен.
Объявление
Swift
var customizableViewControllers: [AnyObject]?
Objective C
@property(nonatomic, copy) NSArray *customizableViewControllers
Обсуждение
Эти средства управления свойством, какие элементы в панели вкладок могут быть перестроены пользователем. Когда пользователь касается Большего количества элемента на представлении панели вкладок, пользовательский интерфейс кажется выводящим на экран любые элементы, не соответствовавшие на основной панели вкладок. Этот интерфейс также содержит кнопку Edit, позволяющую пользователю перестраивать элементы. Только элементы, связанные контроллеры представления которых находятся в этом массиве, могут быть перестроены от этого интерфейса. Если массив пуст, или значение этого свойства
nil
, панель вкладок не позволяет никаким элементам быть перестроенными.Изменение значения
viewControllers
свойство (или непосредственно или использованиеsetViewControllers:animated:
метод), также изменяет значение этого свойства. Когда сначала присвоенный контроллеру панели вкладок, все контроллеры представления настраиваемы по умолчанию.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
moreNavigationController
СвойствоКонтроллер представления, управляющий Большим количеством интерфейса навигации. (только для чтения)
Объявление
Swift
var moreNavigationController: UINavigationController { get }
Objective C
@property(nonatomic, readonly) UINavigationController *moreNavigationController
Обсуждение
Даже если кнопка More не выведена на экран на экране, это свойство всегда содержит допустимое Больше контроллера навигации. Можно использовать значение этого свойства, чтобы выбрать Больше контроллера навигации в интерфейсе панели вкладок или сравнить его с в настоящее время выбираемым контроллером представления.
Не добавляйте, что объект, хранивший в этом свойстве к Вашей панели вкладок, взаимодействует через интерфейс вручную. Больше контроллера выведено на экран автоматически контроллером панели вкладок, поскольку это необходимо. Вы не должны также искать Больше контроллера навигации в массиве контроллеров представления, сохраненных в
viewControllers
свойство. Контроллер панели вкладок не включает Больше контроллера навигации в тот массив объектов.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
selectedViewController
СвойствоКонтроллер представления связался с в настоящее время выбираемым элементом вкладки.
Объявление
Swift
unowned(unsafe) var selectedViewController: UIViewController?
Objective C
@property(nonatomic, assign) UIViewController *selectedViewController
Обсуждение
Этот контроллер представления является тем, пользовательское представление которого в настоящее время выводится на экран интерфейсом панели вкладок. Указанный контроллер представления должен быть в
viewControllers
массив. Присвоение нового контроллера представления к этому свойству изменяет в настоящее время выводимое на экран представление и также выбирает надлежащую вкладку в панели вкладок. Изменение контроллера представления также обновляетselectedIndex
свойство соответственно. Значение по умолчанию этого свойстваnil
.В iOS 3.0 и позже, можно использовать это свойство для выбора любого из контроллеров представления в
viewControllers
свойство. Это включает контроллеры представления, которыми управляет Больше контроллера навигации и чьи элементы панели вкладок не видимы в панели вкладок. Можно также использовать его для выбора самого Большего количества контроллера навигации, который доступен отmoreNavigationController
свойство. До iOS 3.0 Вы могли выбрать только Больше контроллера навигации и подмножество контроллеров представления, элемент панели вкладок которых был видим. Попытка установить это свойство в контроллер представления, элемент панели вкладок которого не был видим, не имела никакого эффекта.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
selectedIndex
СвойствоИндекс контроллера представления связался с в настоящее время выбираемым элементом вкладки.
Обсуждение
Это свойство номинально представляет индекс в массив
viewControllers
свойство. Однако, если выбранный контроллер представления является в настоящее время Большим количеством контроллера навигации, это свойство содержит значениеNSNotFound
. Установка этого свойства изменяет выбранный контроллер представления на тот в определяемом индексе вviewControllers
массив. Для выбора самого Большего количества контроллера навигации необходимо изменить значениеselectedViewController
свойство вместо этого.В версиях iOS до версии 3.0 это свойство отражает индекс выбранного элемента панели вкладок только. Попытка установить это значение в индекс контроллера представления, который не видим в панели вкладок, но вместо этого управляется Большим количеством контроллера навигации, не имеет никакого эффекта.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 2.0 и позже.
См. также