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:
Modale Schnittstellen
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 DismissController
den 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).
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.
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);