2010-12-23 83 views
0

我有一個viewstack容器,有3個視圖:紅色,黑色和藍色。我怎麼能完全隱藏黑色&不包括它呢?隱藏viewstack容器的容器

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"  
      xmlns:mx="library://ns.adobe.com/flex/mx"  
      xmlns:s="library://ns.adobe.com/flex/spark" 
      horizontalCenter="0" verticalCenter="0" 
      > 

<mx:LinkBar dataProvider="{myVS}" borderVisible="false" color="blue" disabledColor="black" /> 

<mx:ViewStack id="myVS" borderVisible="false" width="100%" height="100%" > 

    <mx:VBox id="red" label="click red" horizontalAlign="center" verticalAlign="middle" > 
     <s:Label id="r1" color="red" fontSize="25" text="This is the red label" /> 
    </mx:VBox> 

    <mx:VBox id="black" label="click black" horizontalAlign="center" verticalAlign="middle" > 
     <s:Label id="r2" color="black" fontSize="25" text="This is the black label" /> 
    </mx:VBox> 

    <mx:VBox id="blue" label="click blue" horizontalAlign="center" verticalAlign="middle" > 
     <s:Label id="r3" color="blue" fontSize="25" text="This is the blue label" /> 
    </mx:VBox> 

</mx:ViewStack> 

</s:Application> 

回答

1

我擔心我可能會錯過您的問題的意圖。 ViewStack組件用於顯示多個視圖「堆疊」在一起,只有視圖一次顯示。它不包含像TabNavigator可能的內置導航。如果你想「完全隱藏」黑色視圖,只需在編譯代碼之前將其註釋掉,因此它永遠不會顯示。

我你的代碼示例,您使用的是與則ViewStack作爲數據提供程序的鏈接吧中看到的,所以也許你的意思是問如何保持黑色的觀點出來ØLinkBar中。只是執行一些神奇的ActionScript創建自定義數據提供程序:

var dataProvider : ArrayCollection = new ArrayCollection([ 
{label:"click Red"}, 
{label:"click blue"} 
]); 

,並指定數據提供程序作爲數據提供程序源爲您linkBar:

<mx:LinkBar dataProvider="{dataProvider}" borderVisible="false" color="blue" disabledColor="black" /> 
0

我認爲快速和骯髒的方法是隻是將其刪除:

myVS.removeElement(black); 

不過,我想我會使用視圖狀態來代替。這可以讓你稍後再回來,而無需弄清楚如何/在哪裏放回去。定義你的狀態:

<s:states> 
    <s:State name="all" /> 
    <s:State name="notBlack" /> 
</s:states> 

而在你的「黑」 VBox,從「notBlack」狀態排除:

<mx:VBox id="black" excludeFrom="notBlack" ... /> 

然後,當你想刪除它,你可以通過設置這樣做currentState

<s:Button click="currentState='notBlack'" label="remove black" /> 
+0

使用狀態和ViewStacks在一起嗎?這是瘋狂的。我不明白爲什麼它不會工作,但他們有時被作爲兩種不同的方法,以同樣的目的。 – JeffryHouser 2010-12-23 03:39:56