我有一个TabNavigator,有一些孩子。应用程序的流程允许用户使用此TabNavigator离开屏幕,然后返回。发生这种情况时,显示父画布的方法会将selectedChild设置为第一个选项卡。实际测试时,TabNavigator返回显示第一个选项卡上的文本,但突出显示的选项卡是用户在离开之前所处的任何选项卡。
这是一些伪代码看起来像我的东西:
<mx:Canvas show="init()">
<mx:Script>
<![CDATA[
private function init():void {
menutabs.selectedChild = tab1;
}
]]>
</mx:Script>
<mx:TabNavigator id="menutabs">
<mx:VBox id="tab1" label="Tab 1"><mx:Label text="First Tab Text" /></mx:VBox>
<mx:VBox id="tab2" label="Tab 2"><mx:Label text="Second Tab Text" /></mx:VBox>
<mx:VBox id="tab3" label="Tab 3"><mx:Label text="Third Tab Text" /></mx:VBox>
</mx:TabNavigator>
</mx:Canvas>
所以我正在经历的,例如,使用应用程序进入另一个画布,已经在Tab 2上,然后返回到此画布以查看文本“First Tab Text”,但顶部突出显示的选项卡是“标签2.“我在invalidateDisplayList,validateNow等的init()方法中尝试了一些变体,结果没有变化。
欢迎任何想法。
答案 0 :(得分:1)
这是同一个问题in this question 我也遇到了同样的问题,它似乎是Flex框架的TabNavigator控件中的一个错误。我还没有找到解决方案。
我设法找到了一个临时解决方法:
tabNavigator.notifyStyleChangeInChildren('tabStyleName',false)
正确重绘标签样式。我希望这些足以涵盖您的案件。
答案 1 :(得分:0)
您是否观察到'selectedChild'是ViewStack的实际属性,而不是TabNavigator? 由于TabNavigator可以被视为ViewStack + TabBar,因此设置selectedChild对TabBar没有影响。
我建议使用'selectedIndex'而不是设置selectedChild。您可以使用getChildIndex()
从Container本身获取selectedIndex答案 2 :(得分:0)
我遗漏了一些信息。我的init()方法不仅仅是selectedChild,我认为其他的东西,不一定每次都需要运行,是搞砸重新绘制标签的原因。所以我创建了一个新的goHomeTab()方法来调用show,并仅在初始化时调用我的init()方法。现在一切似乎都很好。感谢。