禁用TabBar中的Tab

时间:2013-09-25 09:11:06

标签: actionscript-3 flex flex3 tabbar

我有一个小问题,希望对你没有任何意义。 : - )

我在mxml-Form中有一个tabbar。它看起来像是:

<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>

现在我有一个问题,我必须在创建tabbar后检查,从哪个状态创建tabbar。 如果它是从特定状态创建的,则必须禁用第一个选项卡。

我这样做了如下:

public function check():void {

        if(checkstate_){

           tabBar_.getChildAt(0).enabled= false;

        }   
}

不幸的是它不起作用。

有人可以帮帮我吗?

感谢!!!!

麦克

1 个答案:

答案 0 :(得分:0)

在名为@private的{​​{1}}组件中似乎存在未记录的(在ASDOC中标记为NavBar)属性。 enbaledField组件在其类层次结构中的某个位置扩展TabBar

以下是来自Apache Flex github repo的代码(包括在内以便您可以阅读ASDOC评论):

NavBar

理论上(我没有安装Flex),如果/** * @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; } 中的元素具有名为dataProvider的属性,则可以禁用enabled中的各个按钮。

或者,如果您想使用dataProvider元素中的其他字段来指示应该启用/禁用该按钮,则可以在TabBar属性上设置新值。

警告似乎是ASDOC说这首先包含在Flex 4.10中。但我认为这很奇怪,因为这是一个较旧的MX组件。但是,可能是这个属性确实是在Flex 4.10中添加的。

如果这是真的,那只是在Flex 4.10中,那么你可以复制相应的代码位并自己实现它@zeus建议。特别要注意enableField类中发生魔法的私有方法createNavChildren()

NavBar
具有上述所有代码的github仓库中的

Here is a link//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; } 类。