2012-09-28 74 views
0

我剛剛開始一個新項目,並且希望爲我的一些屏幕使用SplitViewNavigator佈局,因爲它適合我將要做的事情。Flex 4.6 SplitViewNavigator - 顯示/隱藏導航器

然而並非所有的屏幕都應該使用這種佈局(homeview就是其中之一)。所以我開始將側視圖的可見性設置爲false。

<s:SplitViewNavigator includeIn="tablet" width="100%" height="100%"> 
    <s:layout.landscape> 
     <s:HorizontalLayout /> 
    </s:layout.landscape> 
    <s:layout.portrait> 
     <s:VerticalLayout /> 
    </s:layout.portrait> 
    <s:ViewNavigator width.landscape="35%" height.landscape="100%" 
        width.portrait="100%" height.portrait="30%" 
        firstView="views.TestView" visible="false"/> 
    <s:ViewNavigator width="100%" height="100%" height.portrait="100%" 
        firstView="views.OnSiteFormHomeView" /> 
</s:SplitViewNavigator> 

我知道如何訪問SpitViewNavigator和各個ViewNavigators。所以我在我的家庭視圖中做了以下(作爲測試),但似乎沒有發生。 (另一個導航器保持全屏顯示)。我試着將代碼附加到intialize和creationcomplete事件中。

// Create a reference to the SplitViewNavigator. 
var splitNavigator:SplitViewNavigator = navigator.parentNavigator as SplitViewNavigator; 
// Create a reference to the ViewNavigator for the Detail frame. 
var sideNavigator:ViewNavigator = splitNavigator.getViewNavigatorAt(0) as ViewNavigator; 
var detailNavigator:ViewNavigator = splitNavigator.getViewNavigatorAt(1) as ViewNavigator; 
sideNavigator.visible = true; 

我認爲我需要以某種方式重新繪製屏幕/導航器。我已經嘗試在splitviewnavigator和各個導航器上調用初始化函數,但它似乎沒有任何區別。

回答

1

回答我自己的查詢。我發現,它爲我工作的意見(彈出/推)之間,所以我可以做如下(從單個視圖畫面):

sideNavigator.visible = true; 
sideNavigator.pushView(SideViewHere); 
detailNavigator.pushView(NewMainView); 

和反向將是:

detailNavigator.popView(); 
sideNavigator.visible = false; 
sideNavigator.popView(); 

哪給我我需要的一切。