Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка платформы AppKit ссылка класса NSPageController

Опции
Развертывание Target:

На этой странице
Язык:

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];
  • }];

Наследование


Соответствует


Оператор импорта


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 и позже.

    См. также

    selectedIndex

  • Перешел к конкретному объекту.

    Объявление

    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 Свойство

    В настоящее время выбранный объект в расположенном массиве объектов.

    Объявление

    Swift

    var selectedIndex: Int

    Objective C

    @property NSInteger selectedIndex

    Обсуждение

    Для анимации перехода к новому индексу используйте объект Animator класса NSPageController.

    Это свойство является значением ключа, наблюдающим совместимый.

    Оператор импорта

    Objective C

    @import AppKit;

    Swift

    import AppKit

    Доступность

    Доступный в OS X v10.8 и позже.

    См. также

    arrangedObjects

  • Перешел назад в расположенном массиве объектов контроллера страницы.

    Объявление

    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 и позже.

  • Контроллер представления связался с выбранным объектом.. (только для чтения)

    Объявление

    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;

    Константы

    • StackHistory

      NSPageControllerTransitionStyleStackHistory

      Страницы сложены друг на друге. Страницы анимируют к праву показать предыдущую страницу. Следующие страницы анимируют в от права.

      Доступный в OS X v10.8 и позже.

    • StackBook

      NSPageControllerTransitionStyleStackBook

      Страницы сложены друг на друге. Страницы анимируют налево для раскрытия следующей страницы. Предыдущие страницы анимируют в слева.

      Доступный в OS X v10.8 и позже.

    • HorizontalStrip

      NSPageControllerTransitionStyleHorizontalStrip

      Каждая страница размечается друг рядом с другом в одной длинной горизонтальной полосе

      Доступный в OS X v10.8 и позже.

    Обсуждение

    Эти стили перехода независимы от спецификации делегата режима истории или книги. Совершенно разумно создать пользовательский интерфейс стиля истории с помощью методов делегата режима книги. Просто установите стиль перехода соответственно.

    Оператор импорта

    Objective C

    @import AppKit;

    Swift

    import AppKit

    Доступность

    Доступный в OS X v10.8 и позже.