QML-тип PageStack

Хранит и управляет страницами приложения. Подробнее...

Строка импорта: import Sailfish.Silica 1.0
Наследуется от: Item

Свойства

Методы

Подробное описание

Тип PageStack обеспечивает стековую модель навигации.

Стек страниц состоит из одной или нескольких страниц, определенных объектами Page. Страница может быть добавлена (push) в стек или удалена (pop) из стека.

Каждое приложение ОС Аврора, созданное объектом ApplicationWindow, содержит один объект PageStack (предоставляется свойством pageStack окна), который включает в себя страницы приложения. Каждая страница объекта включает содержимое, которое будет отображаться приложением в определенный момент времени. Страницы могут быть добавлены в стек или удалены из стека, что требуется для изменения самой верхней страницы, всегда отображаемой в окне приложения.

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

Страницы добавляются в стек с помощью метода push(), а удаляются с помощью метода pop(). В примере ниже окно приложения отображает страницу "MyPage.qml":

 // main.qml
 import Sailfish.Silica 1.0

 ApplicationWindow {
     initialPage: Qt.resolvedUrl("MyPage.qml")
 }

Файл MyPage.qml определяет страницу с двумя кнопками. Нажатие кнопки "Next page" помещает еще один экземпляр MyPage в стек, а нажатие кнопки "Previous page" убирает отображаемый в данный момент экземпляр из стека.

 // MyPage.qml
 Page {
     Column {
         width: parent.width
         spacing: Theme.paddingLarge

         PageHeader { title: "Page " + pageStack.depth }

         Button {
             text: "Next page"
             anchors.horizontalCenter: parent.horizontalCenter
             onClicked: pageStack.push(Qt.resolvedUrl("MyPage.qml"))
         }

         Button {
             text: "Previous page"
             anchors.horizontalCenter: parent.horizontalCenter
             onClicked: pageStack.pop()
         }
     }
 }

Навигация по страницам

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

Когда пользователь перемещает текущую страницу слева направо, это интерпретируется как "обратный" навигационный жест, вызывая удаление текущей страницы из стека и возвращение пользователя на предыдущую страницу.

Как видно из примера выше, индикаторы в левом и правом верхних углах страницы указывают можно ли выполнить жест смахивания (swipe) для перемещения назад или вперед. Navigation gestures can also be invoked programmatically, via the navigateBack() and navigateForward() functions.

См. также Page.

Описание свойств

acceptAnimationRunning : bool

Истинно, если анимация индикатора принятия текущей диалоговой страницы активна. Это происходит только тогда, когда текущей страницей в стеке является диалог.

busy : bool

Истинно, если в текущий момент времени в стеке осуществляется переход с одной страницы на другую. Это происходит, когда страница находится в процессе добавления или удаления, что вызывает эффект для анимации или плавного перехода между страницами.

См. также push(), pop() и completeAnimation().

currentPage : Item

Сообщает какая страница является текущей, то есть находится в вершине стека.

depth : int

Сообщает количество страниц в стеке.

Описание методов

clear()

Удаляет все страницы из стека.

См. также pop().

completeAnimation()

Немедленно завершает любую запущенную анимацию перехода. Стек страницы сразу переходит в конечное состояние. Когда анимация не выполняется, вызов данной функции не имеет смысла.

find(object function)

Ищет в стеке совпадающую страницу и возвращает ее.

Проверяет стек страниц сверху вниз и возвращает первую найденную страницу, для которой function(page) принимает значение true.

Параметр function должен быть объектом функции JavaScript, которая принимает аргумент страницы и возвращает true, если страница соответствует, или false — в противном случае.

navigateBack(int operationType)

Обеспечивает переход вниз по стеку, что эквивалентно действию, вызываемому пользователем при перемещении страницы слева направо.

Параметр operationType может принимать одно из значений:

  • PageStackAction.Animated;
  • PageStackAction.Immediate.

См. также navigateForward().

navigateForward(int operationType)

Обеспечивает переход вверх по стеку, что эквивалентно действию, вызываемому пользователем при перемещении страницы справа налево.

Параметр operationType может принимать одно из значений:

  • PageStackAction.Animated;
  • PageStackAction.Immediate.

См. также navigateBack().

nextPage(Page fromPage)

Возвращает страницу, которая следует за страницей fromPage в стеке. Если параметр fromPage не указан, возвращается страница, следующая за текущей вершиной стека.

См. также previousPage().

pop(var page,  int operationType)

Удаляет одну или несколько страниц из стека и возвращает страницу, которая ранее была вершиной стека.

Если задан объект page, все страницы над указанной страницей удаляются. В противном случае удаляется только currentPage, т. е. верхняя страница в стеке. Если текущая страница — единственная в стеке, то она не будет удалена.

Параметр operationType может принимать одно из значений:

  • PageStackAction.Animated;
  • PageStackAction.Immediate.

По умолчанию страница удаляется через анимированный переход. Эту анимацию можно отключить, указав для параметра operationType значение PageStackAction.Immediate.

Возвращает страницу, которая ранее была вершиной стека.

См. также push(), clear() и completeAnimation().

popAttached(var page,  int operationType)

Удаляет одну или несколько присоединенных страниц из вершины стека. Если указанная страница page является неприсоединенной, то она и присоединенная к ней страница будут удалены из стека. Если же указанная страница является присоединенной, то только она будет удалена из стека.

Операция будет отменена, если сверху удаляемой присоединенной страницы есть другие страницы или если у целевой страницы нет присоединенных страниц.

Параметр operationType может принимать одно из значений:

  • PageStackAction.Animated;
  • PageStackAction.Immediate.

Если в результате применения данного метода текущая вершина стека будет удалена, тогда следующая за текущей страница станет вершиной стека. По умолчанию это изменение осуществляется через анимированный переход. Эту анимацию можно отключить, указав для параметра operationType значение PageStackAction.Immediate.

Возвращает страницу, которая ранее была вершиной стека, если текущая страница была изменена. Иначе возвращает значение null.

См. также pop() и pushAttached().

previousPage(Page fromPage)

Возвращает страницу, которая предшествует странице fromPage в стеке. Если fromPage не задана, то возвращается страница, которая предшествует текущей вершине стека.

См. также nextPage().

push(var page,  object properties,  int operationType)

Добавляет указанную страницу page в верх стека.

Параметр page может принимать значение одного из следующих типов:

  • элемент типа Item;
  • объект компонента (Component);
  • URL компонента типа Page (например, "MyPage.qml");
  • массив страниц;
  • URI или диалог Sailfish.Silica (например, "Sailfish.Silica.TimePickerDialog").

Параметр operationType может принимать одно из значений:

  • PageStackAction.Animated;
  • PageStackAction.Immediate.

По умолчанию страница добавляется через анимированный переход. Эту анимацию можно отключить, указав для параметра operationType значение PageStackAction.Immediate. Кроме того, необязательный параметр properties определяет ассоциативный массив свойств, которые должна быть установлены ​для страницы.

Если страница pages является массивом, то каждое значение в массиве может быть элементом, объектом компонента Component или URL-адресом, как указано выше. Кроме того, значение массива может быть объектом с параметром 'page' и необязательным параметром 'properties', чтобы включить добавление страницы с определенными свойствами.

Возвращает экземпляр страницы.

См. также pop() и completeAnimation().

pushAttached(var page,  object properties)

Присоединяет страницу page к текущей вершине стека. Новая страница находится над текущей страницей в стеке, но не отображается сразу. Присоединенная страница может быть показана путем перемещения вперед в стеке. Присоединенная страница не является независимым членом стека. Она будет удалена из стека, когда страница, к которой она присоединена, будет вытолкнута из стека. Страница может иметь только одну присоединенную страницу. При добавлении нескольких страниц предыдущие удаляются.

Параметр page может принимать значение одного из следующих типов:

  • элемент типа Item;
  • объект компонента (Component);
  • URL компонента типа Page (например, "MyPage.qml");

Необязательный параметр properties определяет ассоциативный массив свойств, которые должна быть установлены ​для страницы.

Возвращает экземпляр присоединенной страницы.

См. также push() и popAttached().

replace(int page,  object properties,  int operationType)

Заменяет текущую страницу стека на заданную страницу page. Параметры page, properties и operationType такие же, как для push().

Возвращает новую страницу на вершину стека.

См. также push(), pop() и replaceAbove().

replaceAbove(var existingPage,  var page,  object properties,  int operationType)

Заменяет одну или несколько страниц в стеке на указанную страницу page.

Все страницы, расположенные выше страницы, заданной параметром existingPage, будут удалены. Если параметр existingPage имеет значение null, то будут удалены все страницы в стеке. Параметры page, properties и operationType такие же, как для push().

Возвращает новую страницу на вершину стека.

См. также push() и pop().