组件在“设计”视图中显示,但在启动应用程序时不显示

时间:2012-08-11 14:32:49

标签: flex flash-builder4.5

这就是发生的事情: 我有一个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的内容都不会在状态改变后显示。

1 个答案:

答案 0 :(得分:0)

要缩小您遇到的问题,您可以先从代码中删除includeIn="loggedin",这至少可以确保您的组件正常显示。

接下来,我会在你的Login_getStateHandler函数中放一个断点,看看它是否被调用过。如果没有,那么在您的布线中,处理器未被调用。您可以在此处发布更多代码以获取帮助。