这就是发生的事情: 我有一个Tabnavigator,带有以下标签:
<s:NavigatorContent width="100%" height="100%" label="Add a logo" includeIn="loggedin">
<components:LogoSearch />
</s:NavigatorContent>
当我使用以下代码将状态更改为“loggedin”时:
protected function Login_getStateHandler(event:Event):void
{
this.currentState = "loggedin";
}
navigatorContent在设计视图中显示但不显示组件“LogoSearch”,但是当我切换状态时它确实显示。
“LogoSearch”中没有定义任何状态,应该显示......?
当我将tabnavigator包含在“normal”以及“loggedin”中时,将状态更改为“loggedin”,组件“LogoSearch”显示。当我只在“loggedin”中显示tabnavigator时,将状态更改为“loggedin”,组件“LogoSearch”不会显示。
知道为什么会这样吗?我根本不是职业选手,所以请随意指出我的错误。感谢。
尝试使用Tianzhen Lin建议的invalidateDisplayList()和invalidateProperties()。仍然没有任何表现。
<s:NavigatorContent width="100%" height="100%" label="Add a logo" includeIn="loggedin" id="AddLogoTab" >
<s:Label text="test" id="test" />
</s:NavigatorContent>
并且:
protected function Login_getStateRegisterHandler(event:Event):void
{
this.currentState = "register";
test.invalidateDisplayList();
test.invalidateProperties();
test.validateNow();
AddLogoTab.invalidateDisplayList();
AddLogoTab.invalidateProperties();
AddLogoTab.validateNow();
}
无论我做什么,NavigatorContent的内容都不会在状态改变后显示。
答案 0 :(得分:0)
要缩小您遇到的问题,您可以先从代码中删除includeIn="loggedin"
,这至少可以确保您的组件正常显示。
接下来,我会在你的Login_getStateHandler
函数中放一个断点,看看它是否被调用过。如果没有,那么在您的布线中,处理器未被调用。您可以在此处发布更多代码以获取帮助。