2017-09-11 11 views
0

ウォッチアプリの最初のビューをメニューまたは同様のスクロールリストに設定するにはどうすればよいですか?リスト/メニューを最初のビューとして持つGarmin ConnectIQアプリ

私はこの現象をFenix 5で常に見ています。たとえば、Navigateアプリ(「選択」を押し、「ナビゲート」を選択)では、最初の画面はオプションのスクロールリストです。私は、プログラムで作成され、制御されているリストで、私のアプリで同じことが欲しい。

しかし、getInitialView()からメニューを返すと、「Unexpected Type Error」というメッセージが表示されます。

ちょうど明確にする:私は本当にメニューかどうか気にしない。しかし、私は一度にリスト内の複数の項目を見ることができるようにしたい、リストが画面よりも大きい場合は、上下のボタンでスクロールさせます。アイテムをプログラムで描画できるカスタムビューにすることは大きなプラスになります。

私は手動でリストを描き、スムーズなスクロールを手動で実装できると思います。それはあまりにも面倒です。私は、この正確なことが非常に多くの場所で一貫して起こっているのを見ているので、これには組み込みの設備があると信じなければなりません。

ウォッチアプリ - 「選択」(右上)を押してリストから選択すると、ウィジェット、ウォッチフェイス、またはデータは表示されません。フィールド。)

(時計アプリを明確にし、一例として、移動を使用するように編集。)

答えて

0

残念ながら、あなたがメニューであることを(関係なく、アプリの種類の)あなたのアプリケーションの最初のビューを設定することはできません。 CIQフレームワークでは、getInitialView()関数を呼び出すと、最初の要素がView型のオブジェクトである配列が返されると予想されます。メニューの組み込みサポートを使用すると、エラーが発生します。

代わりに、手動で表示するメニューをレンダリングし、次に自分のInputDelegateオブジェクトで手動で上下入力を処理する独自の "ビュー"を作成する必要があります。

独自のメニューシステムを作成するには、ウォッチアプリのみで動作することに注意してください。ウォッチフェイスとデータフィールドでは、入力イベントを処理する能力がなく、ウィジェットでは、初期ビューを別のビューに置き換えるまで、InputDelegateオブジェクトはUPイベントまたはDOWNイベントを受け取りません。ウィジェットで2番目のビューをレンダリングすると、通常、ユーザーが開始ボタンを押すと、InputDelegateオブジェクトはすべてのイベントを受け取ります。

もう1つの選択肢は、最初のビューでアプリケーションのタイトルや一般的な情報をレンダリングし、最初の画面がレンダリングされた後に新しいビュー(メニューになる)を1秒ほど押し込むタイマーを設定することです。このオプションを使用すると、組み込みのメニュー機能を使用してコードの複雑さを減らすことができます。さまざまなサイズとスタイルの複数のデバイスをサポートする場合は特に便利です。答えるため

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); 
    } 

} 
+0

おかげで、私は、時計アプリ、ないウィジェットについて尋ねた:

は私が動作するはずです、あなたの最初のビューのために、このようなコードが、何かを実行していません。 (「ウォッチアプリ」は私の質問の最初の行にあります)。アップ/ダウン制限はそこには適用されません。 Navigateアプリを例として使って質問を編集しました。Navigateアプリはダウンロードされたアプリと同じ場所に表示されるので、Navigateを呼び出しています。 –

+0

申し訳ありませんが、私は「ウィジェット」であると考えられるクロックへの参照に混乱しました。 ConnectIQを初めて使用する開発者は、4つのタイプのいずれかを指すときに「app」という言葉をよく使用します。 – douglasr

+0

ありがとうございます。私は組み込みのアプリが別のAPIにアクセスできると思う。なぜなら、この特定のタイプのメニュー(Navigateのような)がどこからでも見えるからだ。とにかく今私はメニューの代わりに複数のページを使うことができると思っています。私はむしろそれと戦うよりもシステムと一緒に仕事をしたいと思う。 –

関連する問題