Freigeben über


Arbeiten mit watchOS-Navigation in Xamarin

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

Für Multi-Szenen-Watch-Apps 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 wird der Titel auf "Abbrechen " festgelegt und durch Tippen auf den Controller geschlossen.

Rufen Sie auf, um DismissControllerden modal präsentierten Controller programmgesteuert zu schließen.

DismissController();

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

Hierarchische Navigation

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

Szenen können auf den Navigationsstapel verschoben werden. Szenen können aus dem Navigationsstapel ausgeblendet werden

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

Pushing und Popping im Code

Watch Kit erfordert nicht, dass ein überbogender "Navigationscontroller" wie iOS erstellt werden muss – einfach einen Controller mithilfe der PushController Methode pushen und ein Navigationsstapel automatisch erstellt wird.

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

Der Bildschirm der Überwachung enthält eine Schaltfläche "Zurück" in der oberen linken Ecke, Sie können aber auch programmgesteuert eine Szene aus dem Navigationsstapel entfernen.PopController

PopController();

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

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 das Betriebssystem die Initialisierung des neuen Schnittstellencontrollers auf GetContextForSegue .

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

Seitenbasierte Schnittstellen

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

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

Verwenden Sie zum Erstellen einer seitenbasierten Benutzeroberfläche die Hauptbenutzeroberfläche für Ihre Watch-App ReloadRootControllers mit einem Array von Schnittstellencontrollern und Kontexten:

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 PresentController ist, der von einem der anderen Szenen in einer App verwendet wird.

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