這是發生了什麼: 我有一個TabNavigator的有以下標籤:組件顯示在設計視圖中而不是在應用程序啓動
<s:NavigatorContent width="100%" height="100%" label="Add a logo" includeIn="loggedin">
<components:LogoSearch />
</s:NavigatorContent>
當我狀態更改爲「的loggedIn」與下面的代碼:
protected function Login_getStateHandler(event:Event):void
{
this.currentState = "loggedin";
}
navigatorContent顯示組件「LogoSearch」,但在設計視圖中顯示,但是它在切換狀態時顯示。
「LogoSearch」中沒有定義狀態,應顯示...?
當我將tabnavigator包含在「正常」和「已登錄」中,然後將狀態更改爲「已登錄」,組件「LogoSearch」顯示。當我只在「登錄」中顯示tabnavigator時,將狀態更改爲「登錄」,組件「LogoSearch」不顯示。
任何想法爲什麼會發生這種情況?我根本沒有在flex的親,所以隨時指出我的錯誤。謝謝。
按照Tianzhen Lin的建議,嘗試使用invalidateDisplayList()和invalidateProperties()。仍然沒有顯示。
<s:NavigatorContent width="100%" height="100%" label="Add a logo" includeIn="loggedin" id="AddLogoTab" >
<s:Label text="test" id="test" />
</s:NavigatorContent>
和:
protected function Login_getStateRegisterHandler(event:Event):void
{
this.currentState = "register";
test.invalidateDisplayList();
test.invalidateProperties();
test.validateNow();
AddLogoTab.invalidateDisplayList();
AddLogoTab.invalidateProperties();
AddLogoTab.validateNow();
}
無論我做什麼,在NavigatorContent的內容不會statechange後顯示。
感謝您的回覆。 'Login_getStateHandler'被調用並且狀態確實發生變化,因爲狀態發生變化,顯示'includeIn ='loggedin''的元素,但其中的組件不顯示。我真的不知道其他代碼是否會有用,因爲狀態確實發生了變化(無需發佈代碼以實現它),並且組件'LogoSearch'中沒有定義任何狀態。如果你知道我應該展示什麼代碼,請告訴我。再次感謝。 – user1315134 2012-08-11 15:04:15
您可能想要分配組件的寬度和高度屬性並查看它是否正確顯示。取決於組件的寫法,這樣的時候可能無法確定它需要的寬度和高度。您還可以在NavigatorContent中添加一些帶有文本的標籤,並查看它是否顯示。如果兩者均未顯示,則意味着ViewStack沒有正確選擇NavigatorContent。在這種情況下,'invalidateDisplayList()'和'invalidateProperties()'可能會派上用場。 – 2012-08-11 17:51:21
感謝您的回覆,聽起來很有希望。我嘗試用標籤替換組件,但標籤沒有顯示。 – user1315134 2012-08-12 09:06:07