我有一个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组件时。
有没有人知道,如果这个问题有一个很好的解决方案? 对我有很大的帮助,提前谢谢!
答案 0 :(得分:0)
您需要将一个事件参数传递给函数才能生效!
viewDeactivate="viewDeactivates(event)"
然后
private function viewDeactivates(event:Event):void
{
callout.close();
}