2011-12-15 268 views
0

可能重复:
show a login screen before Tab bar controller?显示登录屏幕

我设计应该是显示登录屏幕最初,在此之后它应该显示选项卡栏控制器iPhone应用程序有5个标签。我可以在最初启动登录屏幕,但是当单击登录按钮时,我无法显示标签栏控制器,请帮助我解决代码问题。这里是我的代码:这是一个基于视图的应用程序。这里是我的代码:

delegate.h

@interface iphoneAppDelegate : NSObject <UIApplicationDelegate> { 
    UIWindow *window; 

    IphineViewController *viewController; 
    IBOutlet UITabBarController *aTabBarController; 
} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 

@property (nonatomic, retain) IBOutlet IphoneViewController *viewController; 

@property (nonatomic, retain) IBOutlet UITabBarController *aTabBarController; 

@end 

delegate.M

-(void)applicationDidFinishLaunching:(UIApplication *)application { 

// Override point for customization after app launch 

    [window addSubview:viewController.view]; 

    [window makeKeyAndVisible]; 

    LoginView *loginView=[[LoginView alloc]initWithNibName:@"LoginView" bundle:nil]; 

    [window addSubview:loginView.view]; 

} 

loginView.M

TabBarController *tabBarController = [[TabBarController alloc]initWithNibName:@"TabBarController" bundle:nil]; 

    [self.view addSubView: tabBarController.view]; 


    [tabBarController release]; 

我的问题是:

1)可我在标签栏控制器中使用登录视图。我已经在delegate.h中声明了ta bar 如果这不正确如何在我的loginview.m中使用标签栏控制器

+0

你需要接受的答案你前面的问题,令人沮丧的人把精力回答你的问题,如果你不能打扰接受他们的答案。 – 2011-12-15 11:18:38

回答

1

我认为您选择了错误的应用程序布局。您应选择基于窗口的应用程序。然后,您需要做的是首先在应用程序窗口中设置登录屏幕,然后一旦登录按钮被按下,您就可以在应用程序窗口中设置TabBar控制器。去尝试一下。

0

要显示在基础的导航应用程序的登录视图,你应该尝试以下操作:

你只需要修改你的RootViewController的是UIVeiwController代替的UITableViewController的子类,并修改XIB文件有一个正常的UIView作为它的视图而不是UITableView。

然后把下面的函数来设置的TabBar:用于处理按钮单击事件

-(void)setTabbar:(UIView *) view 
{ 
UIButton *btn1,*btn2,*btn3,*btn4,*btn5,*btn6; 
UIView *tabView; 

     tabView=[[UIView alloc]initWithFrame:CGRectMake(0, 375, 320, 44)]; 
     btn1=[UIButton buttonWithType:UIButtonTypeCustom]; 
     btn1.frame=CGRectMake(0, 0, 53, 44); 
     btn1.tag=1; 
     [btn1 setImage:[UIImage imageNamed:@"b1.png"] forState:UIControlStateNormal]; 
     [btn1 setImage:[UIImage imageNamed:@"b2.png"] forState:UIControlStateSelected]; 
     [btn1 addTarget:self action:@selector(btnTabclick::) forControlEvents:UIControlEventTouchDown]; 
     [tabView addSubview:btn1]; 


     btn2=[UIButton buttonWithType:UIButtonTypeCustom]; 
     btn2.frame=CGRectMake(53, 0, 53, 44); 
     btn2.tag=2; 
     [btn2 setImage:[UIImage imageNamed:@"b1.png"] forState:UIControlStateNormal]; 
     [btn2 setImage:[UIImage imageNamed:@"b2.png"] forState:UIControlStateSelected]; 
     [btn2 addTarget:self action:@selector(btnTabclick::) forControlEvents:UIControlEventTouchDown]; 
     [tabView addSubview:btn2]; 

     btn3=[UIButton buttonWithType:UIButtonTypeCustom]; 
     btn3.frame=CGRectMake(106, 0, 53, 44); 
     btn3.tag=3; 
     [btn3 setImage:[UIImage imageNamed:@"b1.png"] forState:UIControlStateNormal]; 
     [btn3 setImage:[UIImage imageNamed:@"b1.png"] forState:UIControlStateSelected]; 
     [btn3 addTarget:self action:@selector(btnTabclick::) forControlEvents:UIControlEventTouchDown]; 
     [tabView addSubview:btn3]; 

     btn4=[UIButton buttonWithType:UIButtonTypeCustom]; 
     btn4.frame=CGRectMake(159, 0, 55, 44); 
     btn4.tag=4; 
     [btn4 setImage:[UIImage imageNamed:@"b1.png"] forState:UIControlStateNormal]; 
     [btn4 setImage:[UIImage imageNamed:@"b1.png"] forState:UIControlStateSelected]; 
     [btn4 addTarget:self action:@selector(btnTabclick::) forControlEvents:UIControlEventTouchDown]; 
     [tabView addSubview:btn4]; 

     btn5=[UIButton buttonWithType:UIButtonTypeCustom]; 
     btn5.frame=CGRectMake(214, 0, 54, 44); 
     btn5.tag=5; 
     [btn5 setImage:[UIImage imageNamed:@"b1.png"] forState:UIControlStateNormal]; 
     [btn5 setImage:[UIImage imageNamed:@"b2.png"] forState:UIControlStateSelected]; 
     [btn5 addTarget:self action:@selector(btnTabclick::) forControlEvents:UIControlEventTouchDown]; 
     [tabView addSubview:btn5]; 

     btn6=[UIButton buttonWithType:UIButtonTypeCustom]; 
     btn6.frame=CGRectMake(266, 0, 55, 44); 
     btn6.tag=6; 
     [btn6 setImage:[UIImage imageNamed:@"b1.png"] forState:UIControlStateNormal]; 
     [btn6 setImage:[UIImage imageNamed:@"b2.png"] forState:UIControlStateSelected]; 
     [btn6 addTarget:self action:@selector(btnTabclick::) forControlEvents:UIControlEventTouchDown]; 
     [tabView addSubview:btn6]; 


if (TAG==1) 
{ 
    [btn1 setSelected:YES]; 
} 
if (TAG==2) 
{ 
    [btn2 setSelected:YES]; 
} 
if (TAG==3) 
{ 
    [btn3 setSelected:YES]; 
} 
if (TAG==4) 
{ 
    [btn4 setSelected:YES]; 
} 
if (TAG==5) 
{ 
    [btn5 setSelected:YES]; 
} 
if (TAG==6) 
{ 
    [btn6 setSelected:YES]; 
} 

[view addSubview:tabView]; 

if ([btnArry count]!=0 || [btnArry retainCount]!=0) 
{ 
    [btnArry release]; 
} 

btnArry=[[NSArray alloc]initWithObjects:btn1,btn2,btn3,btn4,btn5,btn6, nil ]; 
} 

然后把下面的函数

-(IBAction)btnTabclick:(id)sender:(UIView*)view 
{ 
    TAG=[sender tag]; 
if (TAG==1) { 
    //code to handle click event  

}else if(TAG==2){ 
    //code to handle click event 
}else if(TAG==3){ 
    //code to handle click event 
}else if(TAG==4){ 
    //code to handle click event 
}else if(TAG==5){ 
    //code to handle click event  
}else if(TAG==6){ 
    //code to handle click event 
} 
} 

把上面的代码在应用程序委托文件后只需调用settabbar功能如下:

[((AppDelegate *)[[UIApplication sharedApplication]delegate]) setTabbar:self.view]; 
+0

u能告诉我该怎么做?与之形成鲜明 – 2011-12-15 07:06:29

0

您需要选择TabBarBased Application。由此它会自动在appDelegate中创建一个tabBarController对象,并将其设置为tabBarController.view,方法为addSubview。 你需要改变什么是AppDeleagte DidFinishLaunching method

创建login view controller object

然后[window addSubview:loginviewcontroller.view];

请在appDelegate的方法如下: -

-(void)loadTabBarControllerView 
{ 
[[loginviewcontroller view]removeFromSuperview]; 
[window addSubview:tabBarController.view]; 
} 

并在您login按一下按钮做(电话的appDelegateloadTabBarControllerView方法)

[*appDelegateobject* loadTabBarControllerView];