我刚刚开始了一个新项目,并希望在我的某些屏幕上使用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和各个导航器上调用初始化函数,但它似乎没有区别。
答案 0 :(得分:1)
回答我自己的问题。我发现它在视图(弹出/推送)之间适用于我,所以我可以执行以下操作(从单个视图屏幕):
sideNavigator.visible = true;
sideNavigator.pushView(SideViewHere);
detailNavigator.pushView(NewMainView);
反之亦然:
detailNavigator.popView();
sideNavigator.visible = false;
sideNavigator.popView();
这给了我所需要的一切。