Arbeiten mit der watchOS-Navigation in Xamarin

Die einfachste Navigationsoption, die auf der watch verfügbar ist, ist ein einfaches modales Popup, das über der aktuellen Szene angezeigt wird.

Für Apps mit mehreren Szenen watch stehen zwei Navigationsparadigma zur Verfügung:

Verwenden Sie die PresentController -Methode, um einen Schnittstellencontroller modal zu öffnen. Der Schnittstellencontroller muss bereits im Interface.storyboard definiert sein.

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

Modal dargestellte Controller verwenden den gesamten Bildschirm (über die vorherige Szene). Standardmäßig ist der Titel auf Abbrechen festgelegt, und wenn Sie darauf tippen, wird der Controller geschlossen.

Um den modal dargestellten Controller programmgesteuert zu schließen, rufen Sie auf DismissController.

DismissController();

Modale Bildschirme können entweder eine einzelne Szene sein oder ein seitenbasiertes Layout verwenden.

Hierarchische Navigation

Stellt Szenen wie einen Stapel dar, durch den zurück navigiert werden kann, ähnlich wie UINavigationController bei iOS. Szenen können auf den Navigationsstapel gepusht und (entweder programmgesteuert oder durch Benutzerauswahl) abgekloppt werden.

Szenen können auf den Navigationsstapel gepushtwerden Szenen können aus dem Navigationsstapel geknallt werden

Wie bei iOS navigiert eine Wischbewegung nach links zurück zum übergeordneten Controller in einem hierarchischen Navigationsstapel.

Sowohl die Beispiele WatchKitCatalog als auchWatchTables enthalten hierarchische Navigation.

Pushen und Poping in Code

Das Watch Kit erfordert nicht, dass wie bei iOS ein Überlastungs-"Navigationscontroller" erstellt wird– einfach einen Controller mithilfe der PushController -Methode pushen, und ein Navigationsstapel wird automatisch erstellt.

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

Der Bildschirm des watch enthält eine Schaltfläche "Zurück" oben links. Sie können jedoch auch mithilfe von programmgesteuert eine Szene aus dem Navigationsstapel PopControllerentfernen.

PopController();

Wie bei iOS ist es auch möglich, mithilfe PopToRootControllervon zum Stamm des Navigationsstapels zurückzukehren.

PopToRootController();

Verwenden von Segues

Segues können zwischen Szenen im Storyboard erstellt werden, um die hierarchische Navigation zu definieren. Um den Kontext für die Zielszene abzurufen, ruft GetContextForSegue das Betriebssystem auf, um den neuen Schnittstellencontroller zu initialisieren.

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

Page-Based Schnittstellen

Seitenbasierte Schnittstellen wischen von links nach rechts, ähnlich wie UIPageViewController bei iOS. Indikatorpunkte werden am unteren Rand des Bildschirms angezeigt, um anzuzeigen, welche Seite derzeit angezeigt wird.

Beispiel für die erste SeiteBeispiel für die zweite SeiteBeispiel für fünfte Seite

Verwenden Sie ReloadRootControllers mit einem Array von Schnittstellencontrollern und Kontexten, um eine seitenbasierte Schnittstelle als Standard Benutzeroberfläche für Ihre watch App zu verwenden:

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

Sie können auch einen seitenbasierten Controller präsentieren, der nicht der Stamm ist, indem PresentController Sie eine der anderen Szenen in einer App verwenden.

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