Flex 4.6 SplitViewNavigator - 显示/隐藏导航器

时间:2012-09-28 16:08:05

标签: actionscript-3 flex flash-builder flex4.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。所以我在我的家庭视图中做了以下(作为测试)但似乎没有任何事情发生。 (另一个导航器保持全屏)。我已经尝试将代码附加到初始化和创建完成事件。

// 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 个答案:

答案 0 :(得分:1)

回答我自己的问题。我发现它在视图(弹出/推送)之间适用于我,所以我可以执行以下操作(从单个视图屏幕):

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

反之亦然:

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

这给了我所需要的一切。