在 Xamarin 中使用 watchOS 导航

手表上可用的最简单的导航选项是显示在当前场景顶部的简单模式弹出窗口

对于多场景监视应用,有两种导航范例可用:

使用 PresentController 方法可模式打开接口控制器。 接口控制器必须在 Interface.storyboard 中定义。

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

模式呈现的控制器使用整个屏幕(覆盖上一个场景)。 默认情况下,游戏设置为取消,而且点击它将消除控制器。

若要以编程方式关闭模式呈现的控制器,请调用 DismissController

DismissController();

模式屏幕可以是单个场景,也可以使用基于页面的布局。

分层导航

呈现类似堆栈的场景,可以导航回去,类似于 iOS 上的 UINavigationController 工作方式。 场景可以推送到导航堆栈并弹出(以编程方式或用户选择)。

支持向导航堆栈推送场景 支持从导航堆栈中弹出场景

与 iOS 一样,左边缘轻扫导航会导航回分层导航堆栈中的父控制器。

在代码中推送和弹出

监视工具包不需要像 iOS 那样创建超拱形的“导航控制器”- 只需使用 PushController 方法推送控制器,将自动创建导航堆栈。

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

手表的屏幕将包括左上角的后退按钮,但也可以使用 PopController 以编程方式从导航堆栈中删除场景。

PopController();

与 iOS 一样,也可以使用 PopToRootController 返回到导航堆栈的根目录。

PopToRootController();

使用 Segues

可以在情节提要中的场景之间创建 Segues,以定义分层导航。 若要获取目标场景的上下文,操作系统会调用 GetContextForSegue 来初始化新的接口控制器。

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

基于页面的接口

基于页面的接口从左向右轻扫,类似于 iOS 上 UIPageViewController 的工作方式。 指示器点沿屏幕底部显示,以显示当前显示的页面。

示例第一页 示例第二页 示例第五页

若要使基于页面的界面成为监视应用的主 UI,请将 ReloadRootControllers 与接口控制器和上下文数组一起使用:

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

还可以显示基于页面的控制器,该控制器不是使用应用中其他场景之一 PresentController 的根。

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