これまで、アプリを使用するときは、Titanium クラシック プロジェクトを使用して以来、ナビゲーション コントロール ライブラリを使用してきました (Alloy アプリの作成に移行したときに使用しました)。
Employee Directoryのソースを調べたところ、クロスプラットフォーム ナビゲーションをより「Alloy」な方法で作成する別の (似ているが) 興味深いアプローチが見つかりました。コントローラーはindex.xmlビューにあり、ロジックはindex.jsコントローラーにありますが、アプリは実際には別のディレクトリコントローラーとビューで開始されます。
この方法は、従来のコードよりも少しクリーンであると言わざるを得ません。
しかし、今ビルドする必要があるアプリの一部であるレガシー コードにあるものの 1 つは、ログイン画面です。私がコードで行っていることは、ユーザーがログインしているかどうかを確認することです。ログインしている場合は最初に開くウィンドウがログイン画面であり、ユーザーがログインしている場合はメインアプリを開きます。
この例では、メイン ウィンドウはビュー自体に設定されています。
<Alloy>
<!-- Default App Window -->
<Require id="index" src="main" platform="android,windows" />
<!-- iOS Window -->
<NavigationWindow id="nav" platform="ios" class="container">
<Require src="main" />
</NavigationWindow>
<!-- MobileWeb -->
<Window platform="mobileweb">
<NavigationGroup id="nav" class="container">
<Require src="main" />
</NavigationGroup>
</Window>
</Alloy>
私のジレンマは、ユーザーがログインしていない場合にログインを開く方法です。そのログインをメインウィンドウビューに移動することを考えました。ユーザーがログインしていない場合は、ログインコントローラーが必要です。画面全体を表示し、そのビューを画面に追加します。ユーザーがログインしたら、そのビューを削除します。
私が探しているソリューションは、アプリのパフォーマンスに影響を与えるべきではなく、ユーザーがアプリを初めて開いたときに「ちらつき」を表示しないようにしています (ログインの背景画像はスプラッシュ画面)。そのため、ユーザーにはメイン アプリの白い背景とログイン ロードが表示されることはありません。
そのような状況での正しい答えは何ですか (古いコードのみのナビゲーション コントローラーを使用し続けることを犠牲にしても)?