0

私はフレックスが初めてで、モバイルデバイス用のアプリケーションを構築しています。

下部にタブがあるタブ付きビュー ナビゲーター アプリケーションがあります。

一番上には、まだ設定されていないバックといくつかの他のボタンのあるアクションバーがあります。

スプラッシュ画面の後の最初のビューのホームページを作成したいので、ホームタブを作成し、次に特定のタブを選択するというガイドを使用します。問題は、ホームのタブを下部に表示したくないことです.

ホームページを最初のビューとして保持し、下部のタブの一部として表示しない方法はありますか?

4

1 に答える 1

2

簡単に言えば:

  1. IndexChangeEvent リスナーを TabbedViewNavigator インスタンスに追加します [ http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/spark/events/IndexChangeEvent.html ]

  2. インデックスが変更された場合、または変更中の場合は、tabbedViewNavigatorInstance.navigators[newIndex] firstView が Home に等しいかどうかを確認します。

  3. ホームの場合はホームタブを非表示にするか、そうでない場合はホームタブを表示します。このタスクについては、この投稿を確認してください[ Spark TabBarでタブを非表示にする]

実装自体は、現在のフローに応じて複数の方法で実行できます。

動作する簡単な例を次に示します。

<?xml version="1.0" encoding="utf-8"?>
<s:TabbedViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                                  xmlns:s="library://ns.adobe.com/flex/spark" 
                                  applicationDPI="160" applicationComplete="onAppComplete(event)">

    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <fx:Script>
        <![CDATA[
            import spark.components.DataGroup;
            import spark.events.IndexChangeEvent;

            import views.HomeView;

            private function onAppComplete(e : Event) : void {
                this.tabbedNavigator.addEventListener(IndexChangeEvent.CHANGE, onIndexChange);

                showHomeTab(false);
            }

            private function onIndexChange(e : IndexChangeEvent) : void {
                var vn : ViewNavigator = this.navigators[e.newIndex] as ViewNavigator;

                if(vn.firstView === HomeView){
                    showHomeTab(false);
                } else {
                    showHomeTab(true);
                }
            }

            private function showHomeTab(state : Boolean) : void {
                var dg : DataGroup = this.tabbedNavigator.tabBar.dataGroup;

                ///if HomeView is at index 0
                dg.getElementAt(0).visible = state;
                dg.getElementAt(0).includeInLayout = state;
            }
        ]]>
    </fx:Script>

    <s:ViewNavigator label="Home" width="100%" height="100%" firstView="views.HomeView"/>
    <s:ViewNavigator label="Other" width="100%" height="100%" firstView="views.OtherView"/>

</s:TabbedViewNavigatorApplication>
于 2012-12-05T22:00:48.670 に答える