2011-08-23 68 views
3

我試圖用登錄視圖(無選項卡)構建應用程序,用戶提交「登錄」後,它會切換到另一個主視圖(帶有選項卡)。這可能嗎?

切換視圖[Flash Builder 4.5 - Flex Mobile]

目前我在應用程序模板下選擇了「選項卡式應用程序」。
爲了使標籤欄隱藏我想:

protected function view1_activateHandler(event:Event):void 
     { 
      // TODO Auto-generated method stub 
      this.tabBarVisible = false; 
     } 

..但隱藏在運行應用程序有一個幻燈片效果動畫(意味着它不會立即隱藏)
另外,如果切換到主查看,登錄選項卡(屬於LoginView)按鈕將在我不想要的標籤欄上。

還有別的辦法嗎?我很新的Flash Builder/Flex 4.5 ..幫助

我需要10個聲望點發布圖像=。=對不起,我想發佈截圖以便更好地理解。 4個點去了):

回答

5

你應該在視圖元素的tabBarVisible屬性設置爲false,然後如下登錄後更改它:當你想顯示視圖

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    tabBarVisible="false" 
    title="My View" /> 

,只要有你函數通過將this.tabBarVisible設置爲true來顯示條。

public function loginHandler():void { 
    // Do login activities 
    this.tabBarVisible = true; 
} 

這是我在我的評論稱...

Main.mxml:

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:components="components.*" 
      creationComplete="creationCompleteHandler(event)"> 
<fx:Script> 
    <![CDATA[ 
     import mx.events.FlexEvent; 

     private static var app:Main; 

     public static function login():void { 
      app.loginComponent.visible = false; 
      app.navigator.visible = true; 
     } 

     protected function creationCompleteHandler(event:FlexEvent):void { 
      app = this; 
     } 

    ]]> 
</fx:Script> 

<components:LoginComponent id="loginComponent" left="0" right="0" top="0" bottom="0" /> 


<s:TabbedViewNavigator id="navigator" left="0" right="0" top="0" bottom="0" visible="false"> 
    <s:ViewNavigator id="testView1" width="100%" height="100%" label="Test 1" firstView="views.TestView1" /> 
    <s:ViewNavigator id="testView2" width="100%" height="100%" label="Test 2" firstView="views.TestView2" /> 
</s:TabbedViewNavigator> 

我在這裏所做的就是創建一個默認包含簡單登錄組件的應用程序如下...

LoginComponent.mxml:

<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark"> 
<fx:Script> 
    <![CDATA[ 
     protected function login(event:MouseEvent=null):void { 
      Main.login(); 
     } 
    ]]> 
</fx:Script> 

<s:VGroup left="0" right="0" top="0" bottom="0" horizontalAlign="center" horizontalCenter="0" 
      verticalAlign="middle" verticalCenter="0"> 
    <s:HGroup left="0" right="0" height="75" horizontalAlign="left" verticalAlign="middle"> 
     <s:Label text="User Name"/> 
     <s:Spacer width="10" height="10"/> 
     <s:TextInput id="usernameInput" width="200"/> 
    </s:HGroup> 
    <s:HGroup left="0" right="0" height="75" verticalAlign="middle"> 
     <s:Label text="Password"/> 
     <s:Spacer width="18" height="10"/> 
     <s:TextInput id="passwordInput" width="200" displayAsPassword="true" enter="login()"/> 
    </s:HGroup> 
    <s:HGroup left="0" right="0" height="75" verticalAlign="middle" horizontalAlign="center" gap="20"> 
     <s:Button label="Login" click="login(event)" id="btnLogin"/>   
    </s:HGroup> 
</s:VGroup> 

這讓我有一個登錄屏幕,我在一個組件剛剛創建,並嵌入主應用程序的啓動屏幕,可以顯示該TabbedViewNavigator /隨意隱藏。我還沒有嘗試過從一個應用程序啓動到下一個應用程序啓動,看看狀態是如何維護的(例如,如果你想有一個持久登錄,你可以在創建完成處理程序中做一些驗證,但這是對你的點)。

+0

第一部分作品感謝乍得!但是因爲我添加了一個標籤視圖「登錄」,所以屬於它的標籤按鈕出現在主視圖的標籤欄上(成功登錄後)。我似乎無法找到一種方法將其刪除。是否因爲所有內容都包裝在下?有不同的國家以任何方式工作?我嘗試過玩這個:P – daney

+0

哦,不要添加一個名爲login的TabView。這是你可以嘗試的。我會創建一個基礎應用程序,而不是一個選項卡,並手動創建一個TabbedViewNavigator部分。然後,您可以構建一個登錄組件,並將其放在屏幕上的任何位置。然後顯示/隱藏組件並顯示/隱藏TabbedViewNavigator,並在成功登錄後啓動第一個視圖。我會添加一些額外的代碼給我的答案來演示。 – Chad

+0

謝謝,我會試試看。我決定暫時不使用Tabbed視圖。目前我正在使用基於視圖的應用程序模板從「選擇域」>「登錄」>「主視圖」進行切換。後續視圖的其餘部分我僅使用列表組件 [示例>> 'protected function list_changeHandler(event:IndexChangeEvent):void {「導航並將DomainID(數據)推送到下一個視圖」 導航器。 pushView(views.LoginView,list.selectedItem.DomainID); }' 但是這將是很好的探索更多,我期待着您的解決方案乍得(: – daney

相關問題