質問

私はフレックス初心者です。設定によって、指定されたフレックスタブバーのタブの一部を無効にする必要があります。タブバーのタブを繰り返し処理するのに問題があります。 getChildAt()コマンドを使用すると、タブボタンは無効になりませんが、そのタブボタンのコンテンツは無効になるため、無効です。

ありがとうございます。 モヒトランカ

役に立ちましたか?

解決

コードについて尋ねるときは、常に最小限のテストケースを投稿してください。 getChildAt()は機能するので、コードで何か他のことが行われています。

<mx:Script>
    <![CDATA[
        import mx.events.ItemClickEvent;
        import mx.controls.tabBarClasses.Tab;
        private function clickTab(event:ItemClickEvent):void {
            var target:TabBar = event.currentTarget as TabBar;
            var currTab:Tab;
            var parity:int = event.index & 1;
            /* disable all tabs at indices w/ same parity as clicked tab;
               enable tabs of opposite parity.
             */
            for (var i=0; i<target.numChildren; ++i) {
               currTab = target.getChildAt(i) as Tab;
               currTab.enabled = (i&1)^parity;
            }
        }
    ]]>
</mx:Script>

<mx:TabBar id="someTabs" itemClick="clickTab(event)">
    <mx:dataProvider>
        <mx:String>Foo</mx:String>
        <mx:String>Bar</mx:String>
        <mx:String>Baz</mx:String>
        <mx:String>Bam</mx:String>
    </mx:dataProvider>
</mx:TabBar>

他のヒント

構成にバインド可能を使用しない理由

次のようなもの

   enabled="{yourConfiguration.lastResult.enabled}"

Flex 4.5(おそらくFlex 4も)の実用的な答えが必要な人向け。私は最終的に解決策を見つけました。私にとってはハックのように感じますが、Adobeは電話に出ていないので、私のために働いています。簡単な例を示します。

<!-- component that has the the TabBar in it... -->

<fx:Script>
    <![CDATA[
//imports here

import mx.core.UIComponent;

//imports

private function setTabEnabled(index:int,enabled:Boolean):void{
    var theTab:UIComponent = theTabBar.dataGroup.getElementAt(index) as UIComponent;
    if(theTab){theTab.enabled = enabled;}
}
]]>
</fx:Script>

<s:TabBar id="theTabBar"
    dataProvider="{viewStack}"/>

<mx:ViewStack id="viewStack">
    <s:NavigatorContent label="0th Tab">
        <!-- ...Content -->
    </s:NavigatorContent>
    <s:NavigatorContent label="1st Tab">
        <!-- ...Content -->
    </s:NavigatorContent>
    <s:NavigatorContent label="2nd Tab">
        <!-- ...Content -->
    </s:NavigatorContent>
</mx:ViewStack>

<!-- rest of the component that has the the TabBar in it... -->

次に、タブが有効であるかどうかを決定するものに関連するイベントハンドラーで setTabEnabled(theTabIndex、trueFalse)を呼び出すだけです。

これをサポートするためにTabBarを拡張する必要があります が、それを理解しようとして十分な時間を既に費やしました。

ハッピーコーディング= D

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top