Flex TabNavigator 动态增删tab 后的bug (tab选择状态错误)
最近用到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(); //更新tabBarreturn child;}}}