Переключение между Flex Tabbed ViewNavigators - PullRequest
2 голосов
/ 25 мая 2011

Я работаю над Flex TabbedViewNavigatorApplication с тремя вкладками (элементы ViewNavigator). Я хотел бы переключиться с одного ViewNavigator на другой в зависимости от действий пользователя (с помощью кода ActionScript).

Я знаю, что для переключения между представлениями используются pushView и popView, но я работаю с 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>

Спасибо за вашу помощь!

Ответы [ 2 ]

6 голосов
/ 29 августа 2011

Я использую следующую строку ActionScript для переключения с одного ViewNavigator на другое в зависимости от действия пользователя:

TabbedViewNavigator(navigator.parentNavigator).selectedIndex = 1;

Это работает как шарм и кажется проще, чем всплывающие события.

2 голосов
/ 28 мая 2011

Этот класс странно недокументирован.Я не пробовал это сам, но из поиска в Интернете, это то, что я нашел , что подтверждает то, что делает остальная сеть.

Что вам нужно сделать, это отправить событие в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>

Вам просто нужно отправить всплывающее событие изнутри ваших детей.Вы можете создать пользовательское событие, содержащее данные о том, на какую вкладку переключаться.

...