2

私は小さな問題を抱えています。:-)

mxml-Form にタブバーがあります。次のようになります。

<mx:TabBar id="tabBar_" itemClick="clickEvt(event);" selectedIndex="1" creationComplete="check()">
    <mx:dataProvider>
        <mx:Object label="Components" data="{ComponentTabOverview}"/>
        <mx:Object label="Products" data="{ProductTabOverview}"/>
    </mx:dataProvider>
</mx:TabBar>

今、タブバーが作成された状態から、タブバーを作成した後に確認しなければならない問題があります。また、特定の状態から作成された場合、最初のタブを無効にする必要があります。

私は次のようにしました:

public function check():void {

        if(checkstate_){

           tabBar_.getChildAt(0).enabled= false;

        }   
}

残念ながら、うまくいきません。

誰か助けてくれませんか?

ありがとう!!!!

マイク

4

1 に答える 1

0

と呼ばれるコンポーネントに文書化されていない ( @privateASDOC でマークされている) プロパティがあるようです。コンポーネントは、そのクラス階層のある時点で拡張されます。NavBarenbaledFieldTabBarNavBar

Apache Flex github リポジトリのコードを次に示します (ASDOC コメントを読むことができるように含まれています)。

/**
 *  @private
 *  Storage for the enabled property.
 */
private var _enabledField:String = "enabled";

[Bindable("enabledFieldChanged")]
[Inspectable(category="Data")]

/**
 *  Name of the the field in the <code>dataProvider</code> object
 *  to use as the enabled label.
 *  
 *  @default "enabled"
 *  
 *  @langversion 3.0
 *  @playerversion Flash 11.1
 *  @playerversion AIR 3.4
 *  @productversion Flex 4.10
 */
public function get enabledField():String
{
    return _enabledField;
} 

したがって、理論的には (私は Flex もインストールしていません)、要素にdataProviderというプロパティがあるenabled場合、TabBar.

または、 dataProvider 要素の他のフィールドを使用して、ボタンを有効/無効にする必要があることを示す場合は、enableFieldプロパティに新しい値を設定できます。

ASDOC によると、これは最初に Flex 4.10 に含まれていたようです。しかし、これは古い MX コンポーネントであるため、これは奇妙だと思います。ただし、このプロパティは実際には Flex 4.10 で追加された可能性があります。

これが Flex 4.10 だけにあるというのが本当なら、@zeus が提案したように、それぞれのコードをコピーして自分で実装することができます。特に、魔法が発生createNavChildren()するクラスのプライベート メソッドに注意してください。NavBar

//Check for enabled field and assign it to the individual button if it exists.
if (_enabledField != "" && item.hasOwnProperty(_enabledField) == true)
{
    navItem.enabled = Boolean(item[_enabledField]);
}
else
{
    navItem.enabled = enabled;
}

NavBar上記のコードをすべて含む github リポジトリのクラスへのリンクを次に示します。

于 2013-09-26T20:21:23.333 に答える