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: NSPageControllerTransitionStyle
Objective 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;
Константы
-
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 и позже.
-