Praca z nawigacją w systemie watchOS na platformie Xamarin

Najprostszą opcją nawigacji dostępną w zegarku jest proste modalne wyskakujące okienko, które pojawia się w górnej części bieżącej sceny.

W przypadku aplikacji z wieloma scenami dostępne są dwa paradygmaty nawigacji:

PresentController Użyj metody , aby otworzyć kontroler interfejsu modalnie. Kontroler interfejsu musi być już zdefiniowany w scenorysie Interface.storyboard.

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

Modalnie prezentowane kontrolery używają całego ekranu (obejmującego poprzednią scenę). Domyślnie tytuł ma wartość Anuluj , a naciśnięcie go spowoduje odrzucenie kontrolera.

Aby programowo zamknąć modalnie prezentowany kontroler, wywołaj metodę DismissController.

DismissController();

Modalne ekrany mogą być pojedynczą sceną lub używać układu opartego na stronach.

Nawigacja hierarchiczna

Przedstawia sceny, takie jak stos, który można przechodzić wstecz, podobnie jak w przypadku UINavigationController systemu iOS. Sceny można wypchnąć do stosu nawigacji i zwinąć (programowo lub przez wybór użytkownika).

Scenes can be pushed onto the navigation stackScenes can be popped off of the navigation stack

Podobnie jak w przypadku systemu iOS przesunięcie lewej krawędzi przechodzi z powrotem do kontrolera nadrzędnego w stosie nawigacji hierarchicznej.

Przykłady WatchKitCatalog i WatchTables obejmują nawigację hierarchiczną.

Wypychanie i wyskakywanie w kodzie

Zestaw Watch Kit nie wymaga utworzenia nadmiernego "kontrolera nawigacji", takiego jak system iOS — po prostu wypchnięcie kontrolera przy użyciu PushController metody i automatyczne utworzenie stosu nawigacji.

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

Ekran zegarka będzie zawierać przycisk Wstecz w lewym górnym rogu, ale można również programowo usunąć scenę ze stosu nawigacji przy użyciu polecenia PopController.

PopController();

Podobnie jak w przypadku systemu iOS, można również powrócić do katalogu głównego stosu nawigacji przy użyciu polecenia PopToRootController.

PopToRootController();

Korzystanie z segues

Segues można tworzyć między scenami w scenach w celu zdefiniowania nawigacji hierarchicznej. Aby uzyskać kontekst dla sceny docelowej, system operacyjny wywołuje GetContextForSegue metodę inicjowania nowego kontrolera interfejsu.

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

Interfejsy oparte na stronach

Interfejsy oparte na stronach przesuwają palcem od lewej do prawej, podobnie jak w przypadku UIPageViewController systemu iOS. Kropki wskaźnika są wyświetlane wzdłuż dolnej części ekranu, aby pokazać, która strona jest obecnie wyświetlana.

Sample first pageSample second pageSample fifth page

Aby utworzyć interfejs oparty na stronie główny interfejs użytkownika dla aplikacji zegarka, należy użyć z ReloadRootControllers tablicą kontrolerów interfejsu i kontekstów:

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

Możesz również przedstawić kontroler oparty na stronie, który nie jest głównym użyciem PresentController z jednej z innych scen w aplikacji.

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