2011-05-25 81 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