0

这就是正在发生的事情:我有一个带有以下选项卡的 Tabnavigator:

<s:NavigatorContent width="100%" height="100%" label="Add a logo" includeIn="loggedin">

<components:LogoSearch />

</s:NavigatorContent>

当我使用以下代码将状态更改为“登录”时:

protected function Login_getStateHandler(event:Event):void
        {
            this.currentState = "loggedin";
        }

navigatorContent 在设计视图中显示但不显示组件“LogoSearch”,但是当我切换状态时它会显示。

“LogoSearch”中没有定义任何状态,应该显示......?

当我在“正常”和“登录”中包含选项卡导航器时,然后将状态更改为“登录”,组件“LogoSearch”显示。当我只在“loggedin”中显示 tabnavigator 时,将状态更改为“loggedin”,组件“LogoSearch”不显示。

知道为什么会这样吗?我根本不是 flex 方面的专家,所以请随时指出我的错误。谢谢。


按照林天振的建议,尝试使用 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 的内容都不会显示。

4

1 回答 1

0

为了缩小您遇到的问题,您可以从消除includeIn="loggedin"代码开始,这至少可以确保您的组件正确显示。

接下来,我会在你的Login_getStateHandler函数上设置一个断点,看看它是否被调用过。如果不是,那么在您的布线中的某个地方没有调用处理程序。您可以在此处发布更多代码以获得帮助。

于 2012-08-11T14:52:24.087 回答