2011-05-25 80 views
2

我正在使用带有三个选项卡(ViewNavigator元素)的Flex TabbedViewNavigatorApplication。我想根据用户操作(通过ActionScript代码)从一个ViewNavigator切换到另一个。在Flex选项卡式ViewNavigators之间切换

我知道Views之间的切换使用pushViewpopView,但我正在使用ViewNavigators,并且我的搜索没有任何用处。

我试图在事件发生时从Tab2切换到Tab1。在这种情况下,Tab2包含一个列表,当用户做出选择时,我想跳回到Tab1。

<s:TabbedViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
            xmlns:s="library://ns.adobe.com/flex/spark" 
            creationComplete="onAppReady(event)"> 
    <s:ViewNavigator label="Tab1" width="100%" height="100%" firstView="views.TabOneView"/> 
    <s:ViewNavigator label="Tab2" width="100%" height="100%" firstView="views.TabTwoView"/> 
    <s:ViewNavigator label="Tab3" width="100%" height="100%" firstView="views.TabThreeView"/> 
</s:TabbedViewNavigatorApplication> 

感谢您的帮助!

+0

显示一些代码? – 2011-05-25 13:34:17

回答

2

这个类很奇怪,没有记录。我没有尝试过这个,但是从网上搜索,this is what I found证实了网络的其他部分。

您需要做的是将事件泡泡到TabbedViewNavigatorApplication,然后从那里将selectedIndex属性更改为您需要更改为的任何选项卡。例如:

<s:TabbedViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
            xmlns:s="library://ns.adobe.com/flex/spark" 
            creationComplete="onCreationComplete()"> 
    <fx:Script> 
     <![CDATA[ 
      private function onCreationComplete():void 
      { 
       this.addEventListener('someEvent', someHandler); 
      } 

      private function someHandler(e:Event):void 
      { 
       this.selectedIndex = 0; // or whatever index you want. 
      } 
     ]]> 
    </fx:Script> 
    <s:ViewNavigator label="Tab1" width="100%" height="100%" firstView="views.TabOneView"/> 
    <s:ViewNavigator label="Tab2" width="100%" height="100%" firstView="views.TabTwoView"/> 
    <s:ViewNavigator label="Tab3" width="100%" height="100%" firstView="views.TabThreeView"/> 
</s:TabbedViewNavigatorApplication> 

您只需要在您的孩子内分派一个冒泡事件。您可以创建一个自定义事件来保存要切换到哪个选项卡的数据。

6

我用下面的ActionScript行从一个ViewNavigator到另一个基于用户操作切换:

TabbedViewNavigator(navigator.parentNavigator).selectedIndex = 1; 

它的工作就像一个魅力,似乎比冒泡事件简单。

+0

你是我的英雄! – inside 2014-07-01 19:08:09