当前位置: 代码迷 >> Web前端 >> TabNavigator动态删除tab后selectedIndex设置失效的有关问题
  详细解决方案

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

热度:99   发布时间:2012-10-08 19:54:56.0
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>