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:
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 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.
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 PopController
entfernen.
PopController();
Wie bei iOS ist es auch möglich, mithilfe PopToRootController
von 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.
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);