论坛首页 编程语言技术论坛

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

浏览 3161 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-05-12  
关于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>
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics