Flex TabbedViewNavigator在视图中停用事件

时间:2014-02-05 12:58:36

标签: flex air components

我有一个TabbedView应用程序,它看起来像这样:

<s:TabbedViewNavigator width="100%" height="100%" left="0" bottom="0" right="0">
    <s:ViewNavigator label="viewA" firstView="views.viewA" width="100%" height="100%"/>
    <s:ViewNavigator label="viewB" firstView="views.viewB" width="100%" height="100%"/>
</s:TabbedViewNavigator>

这将在应用程序底部创建一个带有两个按钮的按钮栏。 现在我可以轻松地在viewA和viewB之间切换。

当我在viewA中定义一个按钮来触发CallOut(flex中的组件)时,它会显得漂亮而流畅。 我还创建了一个关闭按钮来关闭CallOut。

callout.close();

到目前为止一切顺利。

当我使用按钮打开viewA中的CallOut窗格时,问题将存在。 然后切换到viewB,CallOut窗格仍然存在于屏幕上并且没有关闭。

所以我尝试了这些事件: viewDeactivate或/和deactivate

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark"
        viewDeactivate="viewDeactivates()"

        deactivate="viewDeactivates()"> <!-- or this -->

但似乎在标签viewA和viewB之间切换时没有事件。 viewDeactivate或deactivate没有做任何事情。

我可以在TabbedViewNavigator上使用eventlistener然后关闭CallOut组件(如果存在于ViewA或ViewB的TabbedViewNavigatorView中),但这不是一个很好的编程方式,特别是当你有多个CallOut组件时。

有没有人知道,如果这个问题有一个很好的解决方案? 对我有很大的帮助,提前谢谢!

1 个答案:

答案 0 :(得分:0)

您需要将一个事件参数传递给函数才能生效!

viewDeactivate="viewDeactivates(event)"

然后

private function viewDeactivates(event:Event):void
            {
                callout.close();
            }