Práce s navigacemi watchOS v Xamarinu

Nejjednodušší možnost navigace dostupná na hodinkách je jednoduchá modální místní nabídka , která se zobrazí nad aktuální scénou.

U aplikací pro sledování více scén jsou k dispozici dvě navigační paradigmata:

PresentController Pomocí této metody můžete modálně otevřít kontroler rozhraní. Řadič rozhraní musí být již definován v Rozhraní.storyboard.

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

Modálně prezentované ovladače používají celou obrazovku (pokrývající předchozí scénu). Ve výchozím nastavení je název nastaven na Storno a klepnutím na něj zavřete kontroler.

Pokud chcete programově zavřít modálně prezentovaný kontroler, zavolejte DismissController.

DismissController();

Modální obrazovky můžou být buď jedna scéna, nebo použít rozložení založené na stránkách.

Hierarchická navigace

Prezentuje scény jako zásobník, který se dá procházet zpět, podobně jako funguje UINavigationController v iOSu. Scény se dají nasdílit do navigačního zásobníku a vypnout (buď programově, nebo pomocí výběru uživatele).

Scény lze nasdílit do navigačního zásobníku.Scény se dají rozbalit z navigačního zásobníku.

Stejně jako v iOSu se v hierarchickém navigačním zásobníku vrátí levý okraj– potáhnutí prstem zpět na nadřazený kontroler.

Nabízení a přepnutí v kódu

Sada Watch Kit nevyžaduje, aby se vytvořil překryvný "navigační kontroler", jako tomu je v iOSu – stačí jednoduše odeslat kontroler pomocí PushController metody a automaticky se vytvoří zásobník navigace.

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

Obrazovka kukátku bude v levém horním rohu obsahovat tlačítko Zpět , ale scénu můžete z navigačního zásobníku odebrat také programově pomocí PopController.

PopController();

Stejně jako v iOSu je také možné se vrátit do kořenového adresáře navigačního zásobníku pomocí PopToRootController.

PopToRootController();

Použití segues

Segues lze vytvořit mezi scénami ve scénáři pro definování hierarchické navigace. Pokud chcete získat kontext pro cílovou scénu, operační systém volá inicializaci GetContextForSegue nového kontroleru rozhraní.

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

Rozhraní založená na stránkách

Rozhraní založená na stránkách potahují prstem doleva doprava, podobně jako funguje UIPageViewController v iOSu. V dolní části obrazovky se zobrazí tečky indikátoru, aby se zobrazila stránka, která se právě zobrazuje.

Ukázka první stránkyUkázka druhé stránkyUkázková pátá stránka

Pokud chcete vytvořit rozhraní založené na stránce jako hlavní uživatelské rozhraní aplikace pro hodinky, použijte ReloadRootControllers pole kontrolerů rozhraní a kontextů:

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

Můžete také prezentovat kontroler založený na stránce, který není kořenovým řadičem z PresentController jednoho z dalších scén v aplikaci.

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