Condividi tramite


Uso della navigazione watchOS in Xamarin

L'opzione di spostamento più semplice disponibile nell'orologio è un semplice popup modale visualizzato sopra la scena corrente.

Per le app di controllo su più scene sono disponibili due paradigmi di navigazione:

Usare il PresentController metodo per aprire un controller di interfaccia modally. Il controller di interfaccia deve essere già definito nel file Interface.storyboard.

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

I controller presentati modally usano l'intero schermo (coprendo la scena precedente). Per impostazione predefinita, il titolo è impostato su Annulla e toccandolo chiuderà il controller.

Per chiudere il controller presentato a livello di codice, chiamare DismissController.

DismissController();

Le schermate modali possono essere una singola scena o usare un layout basato su pagina.

Navigazione gerarchica

Presenta scene come uno stack che può essere spostato indietro, simile al modo in cui UINavigationController funziona su iOS. Le scene possono essere spostate nello stack di navigazione e rimosse (a livello di codice o dalla selezione dell'utente).

Le scene possono essere spostate nello stack di navigazioneLe scene possono essere estratte dallo stack di navigazione

Come per iOS, uno scorrimento rapido con arco sinistro torna al controller padre in uno stack di spostamento gerarchico.

Push e estrazione nel codice

Watch Kit non richiede la creazione di un "controller di navigazione" sovrapposto come iOS. È sufficiente eseguire il push di un controller usando il PushController metodo e verrà creato automaticamente uno stack di navigazione.

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

La schermata dell'orologio includerà un pulsante Indietro in alto a sinistra, ma è anche possibile rimuovere una scena dallo stack di navigazione usando PopControllera livello di codice .

PopController();

Come per iOS, è anche possibile tornare alla radice dello stack di navigazione usando PopToRootController.

PopToRootController();

Uso di Segues

Le segue possono essere create tra scene nello storyboard per definire la navigazione gerarchica. Per ottenere il contesto per la scena di destinazione, il sistema operativo chiama GetContextForSegue per inizializzare il nuovo controller di interfaccia.

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

Interfacce basate su pagine

Le interfacce basate su pagina scortono rapidamente da sinistra a destra, in modo analogo al funzionamento UIPageViewController su iOS. I punti indicatore vengono visualizzati nella parte inferiore della schermata per visualizzare la pagina attualmente visualizzata.

Prima pagina di esempioSeconda pagina di esempioQuinta pagina di esempio

Per rendere un'interfaccia basata su pagina l'interfaccia utente principale per l'app watch, usare ReloadRootControllers con una matrice di controller di interfaccia e contesti:

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

È anche possibile presentare un controller basato su pagina che non è la radice usando PresentController da una delle altre scene in un'app.

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