2012-10-17 3 views
1

중첩 된 TabbedViewNavigator (보기 내부)를 구현하려고합니다. 여기중첩 TabbedViewNavigator를 만들고 관리하는 방법은 무엇입니까?

Flex - how to make a tabbed panel

코드 : 그러나 나는 중 하나 내부에 "navigator.pushView (someView)"호출하면

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" title="HomeView"> 

<s:TabbedViewNavigator width="100%" height="100%"> 
    <s:ViewNavigator label="1st Tab" width="100%" height="100%" 
        firstView="views.FirstTabView"/> 
    <s:ViewNavigator label="2nd Tab" width="100%" height="100%" 
        firstView="views.SecondTabView"/> 
    <s:ViewNavigator label="3rd Tab" width="100%" height="100%" 
        firstView="views.ThirdTabView"/> 
</s:TabbedViewNavigator> 

이 게시물에 기술 된 방법 3에 따라 이런 짓을 하위보기 - FirstTabView라고 가정 해 봅시다 - 새보기가 상위보기 탐색기 대신 중첩 된 TabbedViewNavigator로 푸시됩니다. 그건 내가 원하는 것이 아니다. 응용 프로그램 상태를 완전히 변경하고 새보기를 표시하려고합니다. 어떻게하면 될까요? 중첩 TabbedViewNavigator 내에서 변경 내용을 기본보기에서 수신해야하고 새보기를 여기에서 밀어야합니까? 아니면 그냥 다른 방법으로해야합니까?

답변

0

맞춤 이벤트를 사용하여 해결했습니다 (데이터를 가져와야하기 때문에 맞춤입니다).

TabbedViewNavigator에 수신기와 처리기를 추가했습니다. 이 이벤트는 활성 ViewNavigator 뷰 내부에서 전달됩니다. 이벤트에는 bubbles = true가 있으므로 이벤트 체인의 맨 위로 올라갑니다. 그런 다음 이벤트 핸들러에서 새 뷰를 푸시합니다.

홈페이지보기 :

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" title="HomeView"> 

     (...) 

     private function setup(){ 
       tabbed_panel.addEventListener(CustomEvent.BUTTON_PRESSED, eventHandler); 
     } 

     private function eventHandler(ev:CustomEvent):void{ 
      navigator.pushView(MyNewView,ev.event_data); 
     } 

     (...) 


     <s:TabbedViewNavigator id="tabbed_panel" width="100%" height="100%"> 
      <s:ViewNavigator label="1st Tab" width="100%" height="100%" 
       firstView="views.FirstTabView"/> 
      <s:ViewNavigator label="2nd Tab" width="100%" height="100%" 
       firstView="views.SecondTabView"/> 
     </s:TabbedViewNavigator> 

     (...) 
    </s:View> 

FirstTabView :

<View...> 

     (...) 

     private function buttonClickedHandler(event:Event):void{ 
      dispatchEvent(new CustomEvent(event_data,"BUTTON_PRESSED",true)); 
     } 

     (...) 

    </View> 

이 문제에 corrrect 접근 방식 인 경우 나도 몰라,하지만 작동합니다.

관련 문제