TabNavigator动态删除tab后selectedIndex设置失效的问题

关于TabNavigator动态removeAllChildren之后selectedIndex设置失效的解决办法。

调查发现,当remove所有的tab,再动态创建新的tab后,selectedIndex的设置就会失效。所以要保证TabNavigator在remove时至少要保持一个tab存在。

下面是一个简单的小例子:

<?xml version="1.0"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white">

<mx:Script>
<![CDATA[
import mx.containers.VBox;

public var _num:int = 0; // tab数

/*
* 重置:移去当前所有tab,重置两个新的tab
*/
private function remove():void
{
// tab页存在的情况下
if ( _num > 0 )
{
// 新建一个临时tab页 并把它加到TabNavigator的最前面。
var tempVbox:VBox = new VBox;
tabs.addChildAt( tempVbox, 0 );

// remove除了临时tab页之外的所有tab
for ( var i:int = _num; i > 0; i-- )
{
tabs.removeChildAt( i );
}
// 重置tab数
_num = 0;
}

// 新建2个tab
reset( 2 );

// remove临时tab
tabs.removeChildAt( 0 );

// 设置选中页
tabs.selectedIndex = 0;
}

/*
* 新建num个tab
*/
private function reset( num:int = 1 ):void
{
for ( var i:int = 0; i < num; i++)
{
var vbox:VBox = new VBox;
vbox.label = "Panel " + (_num + 1).toString();
tabs.addChild( vbox );
_num++;
}
}
]]>
</mx:Script>

<mx:Button label="重置" click="remove()"/>
<mx:Button label="新建" click="reset()"/>
<mx:TabNavigator id="tabs" width="500" height="200"/>

</mx:Application>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值