我有一个小问题,希望对你没有任何意义。 : - )
我在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;
}
}
不幸的是它不起作用。
有人可以帮帮我吗?
感谢!!!!
麦克
答案 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;
}
类。