`
remoteJavaSky
  • 浏览: 47370 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Flex TabNavigator 动态增删tab 后的bug (tab选择状态错误)

    博客分类:
  • Flex
阅读更多
最近用到Flex的TabNavigator控件,它需要动态的增删Children,当删除所有的Children再添加两个以上Children时就出现了bug,即上一次tab选择状态会保留下来,即使你设置selectedIndex为0,上一次选的是1它选择状态还会是1,这在用户体验上是绝对不友好的。网上没有搜索到解决办法,只好研究其源代码了,并最终找到了解决方案,把我自己写的继承的这个TabNavigator控件附上,希望对大家有帮助:

注释也写的很清楚

package common.containers
{
	import flash.display.DisplayObject;
	import mx.containers.TabNavigator;

	/**
	 * 本身的TabNavigator在更新本身时候不能更新TabBar,所以自己覆盖了一下 
	 * @author Pursuit
	 * 
	 */
	public class MyTabNavigator extends TabNavigator
	{
		public function MyTabNavigator()
		{
			super();
		}
		/**
		 *设置为null很重要,否则TabBar保存了状态而ViewStack却没有,
                 *造成不 一致,给用户造成误解
		 * 
		 */   
       override public function removeAllChildren():void
		{
			super.removeAllChildren();  
			tabBar.dataProvider=null;   //否则下一次添加时,其tabBar不在更新了
		}
		
		/**
		 * 重写此方法,目的是可以更新TabNavigator的tabBar控件,让其选择状态正确显示
		 * @param child
		 * @param index
		 * @return  
		 */ 		
       override public function  addChildAt(child:DisplayObject,index:int):DisplayObject
		{
			super.addChildAt(child, index);
			commitProperties();     //更新tabBar
			return child;
		}
	}
}


0
0
分享到:
评论
4 楼 remoteJavaSky 2013-05-16  
gentleyan 写道

我还知道另外一种方法,比这个简单。


哈哈,你这是调戏我节奏啊    分享下思路散  或者Flex4 之后没这个问题了?

3 楼 gentleyan 2013-05-16  


我还知道另外一种方法,比这个简单。
2 楼 ifreecomm 2011-11-09  
找了几个方案都不行,楼主很强大。。。。
1 楼 lijingjing_0725 2010-09-02  
GG ..关于这个TabNavigator的tab项、、我们测试部提出一个BUg、是关于那个Tab上的关闭按钮、、这里不好说、、如果你在请回复。。我和你QQ聊、、希望GG能指导我、、、

相关推荐

Global site tag (gtag.js) - Google Analytics