NSPageController
NSPageController класс используется для управления, сильно ударяют навигация и анимации между содержанием представления или представлениями. Это полезно для пользовательских интерфейсов, управляющих перешедшими многократными страницами как в книге или истории веб-браузера.
Контроллер страницы наследовался от NSViewController класс. Необходимо присвоиться view свойство к представлению в Вашей иерархии представления. NSPageController класс не продает представление. Класс NSPageController действительно вставляет себя в цепочку респондента.
Концептуально, контроллер страницы управляет сильным ударом между массивом страниц, arrangedObjects. Используя selectedIndex свойство, можно определить, сколько страниц, прямых или обратных, пользователь может перейти.
Режимы контроллера страницы
Существует два режима что NSPageController экземпляр может работать в, режим истории и забронировать режим. Основное различие между этими двумя режимами - то, что режим History ожидает pageController.view быть содержанием и режимом Book ожидает pageController.view быть быть контейнером для содержания, которое Вы предоставите путем возврата viewControllers в Ваших методах делегата.
Режим истории
Режим History разработан, чтобы быть самым простым способом создать пользовательский интерфейс истории. Контроллер страницы будет управлять историей ( arrangedObjects свойство), снимки и пользовательская навигация между страницами в истории.
Поскольку пользователь перешел к новому содержанию, добавьте к истории путем вызова navigateForwardToObject:. Контроллер страницы удалит любого arrangedObjects после selectedIndex и затем добавьте объект до конца arrangedObjects выстройте и обновите selectedIndex свойство. Точно так же, как навигация в новом направлении в веб-браузере потеряна вся прямая история, как только пользователь начинает перемещаться по новому пути. После возврата из navigateForwardToObject: Вы свободны обновить содержание pageController.view.
Вызов метода делегата во время сильного удара режима истории
Во время сильного удара следующие дополнительные методы делегата вызывают в указанном порядке:
pageControllerWillStartLiveTransition: когда пользователь запускает сильно ударить действие, метод делегата вызывается. Это - надлежащая точка, в которой можно сохранить информацию, которую Вы, возможно, должны восстановить, такие как прокрученное расположение страницы.
После возврата из этого метода делегата, pageController.view скрыт. В он - место, которое контроллер страницы показывает частной иерархии представления для анимации ранее взятых снимков истории страницы. Это позволяет контроллеру страницы оставаться быстро реагирующим пользователю без любого требуемого действия Вашим приложением. Затем, если реализовано, pageController:didTransitionToObject: метод делегата вызывается. Этот метод делегата вызывают после физически успешного сильно ударяют, но прежде чем завершилась анимация. Предоставляемый объект является страницей пользователь, по которому проводят к – новое selectedIndex объект в arrangedObjects. Если фон, загружающий задачи, должен инициироваться, это - подходящее время, чтобы сделать так. Однако не блокируйте основной поток, или анимация будет заикаться или пауза.
Наконец, pageControllerDidEndLiveTransition: метод делегата вызывается после сильно ударения, и сильно ударьте, анимации завершены. Вы должны любые настройки позиции или другой дисплей определенное состояние, сохраненное в pageControllerWillStartLiveTransition: реализация. pageController.view все еще скрыт в этой точке, и необходимо вызвать completeTransition на экземпляре контроллера страницы для информирования экземпляра, чтобы скрыть частное представление перехода и показать pageController.view. Часто Вы сразу делаете это, однако, если Ваше содержание не готово, можно вызвать это в более позднем.
Режим книги (режим контроллера представления)
Режим книги разработан, чтобы дать Вам больше контроля процессом сильного удара и упростить больше проектов пользовательского интерфейса, чем просто история, несмотря на то, что можно использовать режим книги для создания пользовательского интерфейса истории.
В этом режиме, pageController.view контейнерное представление, и представления содержания продаются экземплярами контроллера представления, предоставленными объектом делегата.
Для включения режима книги необходимо реализовать следующие два метода в делегате: pageController:identifierForObject: и pageController:viewControllerForIdentifier:.
Экземпляр контроллера страницы кэширует контроллеры представления, предоставленные для каждого идентификатора, и только просит, чтобы это был делегат для создания больше, если Вы не делаете уже существует в его кэше. Если у Вас есть другой тип представлений, Вы хотите сильно ударить в, затем предоставить различный идентификатор для каждого типа.
Когда необходимый, Вас попросят подготовить экземпляр контроллера представления со страницей через дополнительный метод делегата pageController:prepareViewController:withObject:. Если Вы не реализуете этот метод, то representedObject из контроллера представления, который был бы передан этому методу делегата, установлен как объект.
Делегата попросят подготовить контроллер представления с a nil объект для каждого уникального идентификатора это встречается. Экземпляр NSPageController будет использовать это для генерации снимка по умолчанию для того идентификатора.
При использовании режима книги, если pageController.view уровень, поддержанные, живые уровни используются во время перехода вместо снимков.
Обычно при использовании режима книги, набор страниц известен, и это - Ваша ответственность установить arrangedObjects свойство массива и первоначально выбранная страница с помощью selectedIndex свойство.
Вызов метода делегата во время сильного удара режима книги
Во время сильного удара следующие дополнительные методы делегата вызывают в указанном порядке:
Метод делегата pageControllerWillStartLiveTransition: когда пользователь запускает сильно ударить действие, вызывается. Как в режиме истории, это - надлежащая точка, в которой можно сохранить информацию, которую Вы, возможно, должны восстановить, такие как прокрученное расположение страницы.
После возврата из pageControllerWillStartLiveTransition: метод делегата, контроллер страницы берет снимок view в указанном selectedViewController и затем удаляет его из pageController.view. Контроллер страницы заменяет его частной иерархией представления для анимации ранее взятых снимков. В отличие от этого при росте истории, снимки еще могут не существовать для страницы, перемещенной к. В этом случае ранее собранный снимок по умолчанию используется для идентификатора той страницы. Независимо, при использовании снимка по умолчанию или ранее собранного снимка фактического содержания, контроллер представления подготовлен к странице, перемещенной к, и передан делегату. Это viewController.view в то время как сильный удар продолжается, тогда попросился привлечь фоновый поток. Обратите внимание на то, что в этой точке представление не находится в окне. Как только поточное получение фона завершается, начальный моментальный снимок заменяется недавно сгенерированным снимком.
Затем pageController:didTransitionToObject: метод делегата вызывается после физически успешного сильно ударяют, но прежде чем завершилась анимация. Предоставляемый объект является страницей пользователь, по которому проводят к - новый объект в arrangedObjects массив в selectedIndex. Обратите внимание на то, что контроллер страницы selectedViewController еще не был обновлен. Если необходимо запустить некоторые фоновые задачи загрузки, теперь время, чтобы сделать это. Не блокируйте основной поток, или анимация будет заикаться или пауза.
Наконец pageControllerDidEndLiveTransition: метод вызывается после сильно ударения, и сильно ударьте, анимации завершены. selectedViewController.view все еще отсоединяется в этой точке, и необходимо вызвать completeTransition на контроллере страницы, чтобы скрыть частное представление перехода и обновить selectedViewController. Часто Вы сразу делаете это, однако, если Ваше содержание не готово, можно вызвать это в более позднем.
Завершение перехода контроллера страницы
NSPageController экземпляр использует частную иерархию представления во время сильного удара. Когда Вы готовы нарисовать новое содержание, для создания бесшовного перехода к новому содержанию это - ответственность сообщить контроллеру страницы. Идеально, новое содержание должно соответствовать снимок, таким образом, ничего не узнал пользователь. Вы сообщаете контроллеру страницы для завершения перехода путем вызова completeTransition. В случае необходимости контроллер представления подготовлен, и затем довольные просматривают, показан (или добавлен) к иерархии представления, и частное представление перехода скрыто.
Во время страницы контроллер инициировал анимации, pageControllerWillStartLiveTransition: и pageControllerDidEndLiveTransition: вызываются на делегата. Обычно во время pageControllerDidEndLiveTransition: Вы вызовете completeTransition. Анимации Programatic через прокси аниматора не вызывают методы делегата, и Вы ответственны за вызов completeTransition когда завершается анимация. Это легко сделано через обработчик завершения на NSAnimationContext группировка. Например:
//To instantly change the selectedIndex:pageController.selectedIndex = newIndex;//To animate a selectedIndex change:[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {[[pageController animator] setSelectedIndex:newIndex];} completionHandler:^{[pageController completeTransition];}];
Наследование
-
NSObject -
NSResponder -
NSViewController -
NSPageController
-
NSObject -
NSResponder -
NSViewController -
NSPageController
Соответствует
-
AnyObject -
CVarArgType -
Сопоставимый -
Hashable -
NSAnimatablePropertyContainer -
NSCoding -
NSEditor (Informal Protocol) -
NSEditorRegistration (Informal Protocol) -
NSExtensionRequestHandling -
NSObjectProtocol -
NSSeguePerforming -
NSUserInterfaceItemIdentification -
Печатаемый -
NSAnimatablePropertyContainer -
NSCoding -
NSEditor (Informal Protocol) -
NSEditorRegistration (Informal Protocol) -
NSObject -
NSSeguePerforming -
NSUserInterfaceItemIdentification
Оператор импорта
Swift
import AppKit
Objective C
@import AppKit;
Доступность
Доступный в OS X v10.8 и позже.
-
arrangedObjects arrangedObjectsСвойствоМассив, содержащий объекты, выведен на экран в представлении контроллера страницы.
Объявление
Swift
var arrangedObjects: [AnyObject]Objective C
@property(copy) NSArray *arrangedObjectsОбсуждение
Делегата попросят снимков, поскольку они необходимы. Также Вы никогда не можете непосредственно устанавливать этот массив и использовать -
navigateForwardToObject:метод для создания истории как пользователя перешел.Это свойство является значением ключа, наблюдающим совместимый.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.8 и позже.
См. также
-
Перешел к конкретному объекту.
Объявление
Swift
func navigateForwardToObject(_object: AnyObject)Objective C
- (void)navigateForwardToObject:(id)objectПараметры
objectОбъект вывести на экран.
Обсуждение
Очищается
arrangedObjectsмассив после того, как выбранный индекс, добавляет параметр тому массиву и устанавливаетselectedIndexк индексу объекта.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.8 и позже.
-
selectedIndex selectedIndexСвойствоВ настоящее время выбранный объект в расположенном массиве объектов.
Обсуждение
Для анимации перехода к новому индексу используйте объект Animator класса NSPageController.
Это свойство является значением ключа, наблюдающим совместимый.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.8 и позже.
См. также
-
Перешел назад в расположенном массиве объектов контроллера страницы.
Объявление
Swift
@IBAction func navigateBack(_sender: AnyObject?)Objective C
- (IBAction)navigateBack:(id)senderПараметры
senderОтправитель.
Обсуждение
Этот метод обычно вызывается в ответ на пользователя, взаимодействующего с управлением,
sender.Этот метод анимирован и вызывает делегата
pageControllerWillStartLiveTransition:иpageControllerDidEndLiveTransition:методы.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.8 и позже.
-
Перешел к следующему объекту в расположенном массиве объектов контроллера страницы, в подходящих случаях.
Объявление
Swift
@IBAction func navigateForward(_sender: AnyObject?)Objective C
- (IBAction)navigateForward:(id)senderПараметры
senderОтправитель.
Обсуждение
Этот метод обычно вызывается в ответ на пользователя, взаимодействующего с управлением,
sender.Этот метод анимирован и вызывает делегата
pageControllerWillStartLiveTransition:иpageControllerDidEndLiveTransition:методы.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.8 и позже.
-
Перешел к выбранному индексу, взятому от отправителя.
Объявление
Swift
@IBAction func takeSelectedIndexFrom(_sender: AnyObject?)Objective C
- (IBAction)takeSelectedIndexFrom:(id)senderПараметры
senderУправление, вызвавшее действие.
Обсуждение
Когда вызвано, этот метод заставляет представление контроллера страницы отображать объект, указанный значением, принявшим от
senderуправление.Этот метод анимирован и вызывает делегата
pageControllerWillStartLiveTransition:иpageControllerDidEndLiveTransition:методы.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.8 и позже.
-
Делегат контроллера страницы объект.
Объявление
Swift
@IBOutlet unowned(unsafe) var delegate: NSPageControllerDelegate?Objective C
@property(assign) IBOutlet id<NSPageControllerDelegate> delegateОбсуждение
Делегат должен соответствовать
NSPageControllerDelegateпротокол.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.8 и позже.
-
transitionStyle transitionStyleСвойствоСтиль перехода контроллер страницы использует при изменении страниц.
Объявление
Swift
var transitionStyle: NSPageControllerTransitionStyleObjective C
@property NSPageControllerTransitionStyle transitionStyleОбсуждение
Возможные значения для стиля перехода обсуждены в NSPageControllerTransitionStyle.
Значение по умолчанию
NSPageControllerTransitionStyleStackHistory.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.8 и позже.
-
Вызванный, когда завершается переход страницы.
Объявление
Swift
func completeTransition()Objective C
- (void)completeTransitionОбсуждение
Посмотрите Завершение Перехода Контроллера Страницы для полного описания.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.8 и позже.
-
Контроллер представления связался с выбранным объектом.. (только для чтения)
Объявление
Swift
var selectedViewController: NSViewController? { get }Objective C
@property(readonly, strong) NSViewController *selectedViewControllerОбсуждение
Может быть
nilне используя контроллеры представления.Это свойство только релевантно в режиме книги. Посмотрите Режим Книги (Режим Контроллера Представления) для подробных данных.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.8 и позже.
-
Эти константы управляют стилем перехода контроллера страницы.
Объявление
Swift
enum NSPageControllerTransitionStyle : Int { case StackHistory case StackBook case HorizontalStrip }Objective C
enum { NSPageControllerTransitionStyleStackHistory, NSPageControllerTransitionStyleStackBook, NSPageControllerTransitionStyleHorizontalStrip } typedef NSInteger NSPageControllerTransitionStyle;Константы
-
StackHistoryNSPageControllerTransitionStyleStackHistoryСтраницы сложены друг на друге. Страницы анимируют к праву показать предыдущую страницу. Следующие страницы анимируют в от права.
Доступный в OS X v10.8 и позже.
-
StackBookNSPageControllerTransitionStyleStackBookСтраницы сложены друг на друге. Страницы анимируют налево для раскрытия следующей страницы. Предыдущие страницы анимируют в слева.
Доступный в OS X v10.8 и позже.
-
HorizontalStripNSPageControllerTransitionStyleHorizontalStripКаждая страница размечается друг рядом с другом в одной длинной горизонтальной полосе
Доступный в OS X v10.8 и позже.
Обсуждение
Эти стили перехода независимы от спецификации делегата режима истории или книги. Совершенно разумно создать пользовательский интерфейс стиля истории с помощью методов делегата режима книги. Просто установите стиль перехода соответственно.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.8 и позже.
-
