Работа с навигацией watchOS в Xamarin

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

Для приложений с несколькими сценами доступны две парадигмы навигации:

PresentController Используйте метод, чтобы открыть контроллер интерфейса модально. Контроллер интерфейса должен быть уже определен в интерфейсе.storyboard.

PresentController ("pageController","some context info");

Модически представленные контроллеры используют весь экран (охватывающий предыдущую сцену). По умолчанию для заголовка задано значение "Отмена" и касание его будет отклонить контроллер.

Чтобы программно закрыть модально представленный контроллер, вызовите вызов DismissController.

DismissController();

Модальные экраны могут быть одной сценой или использовать макет на основе страниц.

Иерархическая навигация

Представляет сцены, такие как стек, который можно перемещать обратно, аналогично тому, как UINavigationController работает в iOS. Сцены можно отправить в стек навигации и выпустить (программным способом или путем выбора пользователем).

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

Как и в iOS, проводится пальцем влево к родительскому контроллеру в иерархическом стеке навигации.

Отправка и всплывание в коде

Набор контрольных наборов не требует создания контроллера навигации над арками, например iOS, просто отправьте контроллер с помощью PushController метода, и стек навигации будет автоматически создан.

PushController("secondPageController","some context info");

Экран часы будет включать кнопку "Назад " в левом верхнем углу, но вы также можете программно удалить сцену из стека навигации с помощью PopController.

PopController();

Как и в iOS, можно также вернуться в корень стека навигации с помощью PopToRootController.

PopToRootController();

Использование segues

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

public override NSObject GetContextForSegue (string segueIdentifier)
{
  if (segueIdentifier == "mySegue") {
    return new NSString("some context info");
  }
  return base.GetContextForSegue (segueIdentifier);
}

Интерфейсы на основе страниц

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

Пример первой страницыПример второй страницыПример пятой страницы

Чтобы сделать интерфейс на основе страниц основного пользовательского интерфейса для приложения наблюдения, используйте ReloadRootControllers с массивом контроллеров и контекстов интерфейса:

var controllerNames = new [] { "pageController", "pageController", "pageController", "pageController", "pageController" };
var contexts = new [] { "First", "Second", "Third", "Fourth", "Fifth" };
ReloadRootControllers (controllerNames, contexts);

Вы также можете представить контроллер на основе страниц, который не является корневым, используя PresentController один из других сцен в приложении.

var controllerNames = new [] { "pageController", "pageController", "pageController", "pageController", "pageController" };
var contexts = new [] { "First", "Second", "Third", "Fourth", "Fifth" };
PresentController (controllerNames, contexts);