Trabajar con la navegación watchOS en Xamarin

La opción de navegación más sencilla disponible en el watch es un sencillo elemento emergente modal que aparece encima de la escena actual.

En el caso de las aplicaciones de watch de varias escenas hay dos paradigmas de navegación disponibles:

Use el PresentController método para abrir un controlador de interfaz de forma modal. El controlador de interfaz ya debe definirse en interface.storyboard.

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

Los controladores presentados de forma modal usan toda la pantalla (cubriendo la escena anterior). De forma predeterminada, el título se establece en Cancelar y pulsarlo descartará el controlador.

Para cerrar mediante programación el controlador presentado mediante programación, llame a DismissController.

DismissController();

Las pantallas modales pueden ser una sola escena o usar un diseño basado en páginas.

Navegación jerárquica

Presenta escenas como una pila que se puede navegar hacia atrás, de forma similar a la manera UINavigationController en que funciona en iOS. Las escenas se pueden insertar en la pila de navegación y desactivarse (ya sea mediante programación o mediante selección de usuario).

Las escenas se pueden insertar en la pila de navegaciónEscenas se pueden extraer de la pila de navegación.

Al igual que con iOS, un deslizamiento de deslizar el dedo izquierdo vuelve al controlador primario en una pila de navegación jerárquica.

Los ejemplos WatchKitCatalog y WatchTables incluyen navegación jerárquica.

Insertar y extraer código

El Kit de inspección no requiere que se cree un "controlador de navegación" sobre arco, como lo hace iOS, simplemente insertar un controlador mediante el PushController método y se creará automáticamente una pila de navegación.

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

La pantalla del watch incluirá un botón Atrás en la parte superior izquierda, pero también puede quitar mediante programación una escena de la pila de navegación mediante PopController.

PopController();

Al igual que con iOS, también es posible volver a la raíz de la pila de navegación mediante PopToRootController.

PopToRootController();

Uso de Segues

Segues se puede crear entre escenas del guión gráfico para definir la navegación jerárquica. Para obtener contexto para la escena de destino, el sistema operativo llama GetContextForSegue a para inicializar el nuevo controlador de interfaz.

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

Interfaces de Page-Based

Las interfaces basadas en páginas deslizan el dedo de izquierda a derecha, de forma similar a la manera UIPageViewController en que funciona en iOS. Los puntos de indicador se muestran a lo largo de la parte inferior de la pantalla para mostrar qué página se muestra actualmente.

Primera páginade ejemplo Página segunda páginaEjemplo quinta página

Para convertir una interfaz basada en páginas en la interfaz de usuario principal de la aplicación de watch, use ReloadRootControllers con una matriz de controladores y contextos de interfaz:

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

También puede presentar un controlador basado en páginas que no sea la raíz mediante PresentController una de las otras escenas de una aplicación.

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