Compartilhar via


Trabalhando com o watchOS Navigation no Xamarin

A opção de navegação mais simples disponível no relógio é um pop-up modal simples que aparece no topo da cena atual.

Para aplicativos de relógio de várias cenas, há dois paradigmas de navegação disponíveis:

Use o PresentController método para abrir um controlador de interface modalmente. O controlador de interface já deve estar definido no Interface.storyboard.

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

Os controladores apresentados modalmente usam a tela inteira (cobrindo a cena anterior). Por padrão, o título é definido como Cancelar e tocar nele descartará o controlador.

Para fechar programaticamente o controlador apresentado modalmente, chame DismissController.

DismissController();

As telas modais podem ser uma única cena ou usar um layout baseado em página.

Navegação hierárquica

Apresenta cenas como uma pilha que pode ser navegada de volta, semelhante à maneira como UINavigationController funciona no iOS. As cenas podem ser empurradas para a pilha de navegação e exibidas (programaticamente ou por seleção do usuário).

As cenas podem ser empurradas para a pilha de navegaçãoAs cenas podem ser retiradas da pilha de navegação

Assim como no iOS, um gesto de percorrer para a margem esquerda navega de volta para o controlador pai numa pilha de navegação hierárquica.

Empurrando e aparecendo no código

O Watch Kit não requer que um "controlador de navegação" abrangente seja criado como o iOS - basta empurrar um controlador usando o PushController método e uma pilha de navegação será criada automaticamente.

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

A tela do relógio incluirá um botão Voltar no canto superior esquerdo, mas você também pode remover programaticamente uma cena da pilha de navegação usando PopControllero .

PopController();

Assim como no iOS, também é possível retornar à raiz da pilha de navegação usando PopToRootControllero .

PopToRootController();

Usando o Segues

Segues podem ser criados entre cenas no storyboard para definir a navegação hierárquica. Para obter contexto para a cena de destino, o sistema operacional chama GetContextForSegue para inicializar o novo controlador de interface.

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

Interfaces baseadas em página

As interfaces baseadas em página deslizam da esquerda para a direita, semelhante ao que UIPageViewController funciona no iOS. Pontos indicadores são exibidos ao longo da parte inferior da tela para mostrar qual página é exibida no momento.

Exemplo de primeira páginaExemplo de segunda páginaExemplo de quinta página

Para tornar uma interface baseada em página a interface do usuário principal do seu aplicativo de observação, use ReloadRootControllers com uma matriz de controladores de interface e contextos:

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

Você também pode apresentar um controlador baseado em página que não seja a raiz usando PresentController de uma das outras cenas em um aplicativo.

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