不幸的是,您无法将应用程序的第一个视图(无论应用程序类型如何)设置为菜单。CIQ 框架期望调用 getInitialView() 函数将返回一个数组,其中第一个元素是 View 类型的对象。如果您使用对菜单的内置支持,您将收到错误消息。
相反,您必须创建自己的“视图”来呈现菜单(您手动显示),然后使用您自己的 InputDelegate 对象手动处理向上/向下输入。
应该注意的是,创建您自己的菜单系统仅适用于手表应用程序。对于表盘和数据字段,无法处理任何输入事件,而对于小部件,您的 InputDelegate 对象将不会收到任何 UP 或 DOWN 事件,直到您将初始视图替换为第二个视图。当您在小部件上呈现第二个视图时,通常在用户按下开始按钮后,您的 InputDelegate 对象将接收所有事件。
另一种选择是在初始视图上呈现应用程序标题和/或典型信息,并设置一个计时器以在呈现初始屏幕后一秒左右推送一个新视图(这将是您的菜单)。此选项将使您能够使用内置菜单功能,从而降低代码复杂性,如果您计划支持具有不同大小和样式的多个设备,这尤其好。
我还没有运行代码,但是对于您的初始视图,这样的东西应该可以工作:
class SomeView extends Ui.View {
var startupTimer;
var isFirstTime = true;
function initialize(ident,page) {
startupTime = new Timer.Timer();
}
function onShow() {
if (isFirstTime) {
isFirstTime = false;
startupTimer.start( method(:startupTimerCallback), 1000, false );
}
}
function onUpdate(dc) {
if (isFirstTime) {
// render the startup view (title, version, etc) here...
}
}
function startupTimerCallback() {
Ui.pushView(new Rez.Menus.MainMenu(), new MainMenuInputDelegate(), Ui.SLIDE_LEFT);
}
}