2011-08-23 83 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

相关问题