如何从第二个viewcontroller以编程方式创建Tab栏

时间:2013-05-13 07:42:03

标签: iphone ios objective-c tabbar

我正在开发一个包含登录页面的应用程序。第一页应该是登录页面(带有视图控制器)。一旦用户登录,我将显示另一个视图,我需要显示一个标签栏,当用户注销时,必须显示相同的登录屏幕。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:2)

您在TabbarController课程中创建了AppDelegete。当用户成功登录后,您就会将Appdelegete TabbarController设置为您窗口的RootViewController

AppDelegate *appDelegate = (AppDelegate *) [[UIApplication sharedApplication] delegate];
[appDelegate.window setRootViewController:appDelegate.tabBarController];

答案 1 :(得分:1)

我已完成此类项目,但我已根据要求制作了自定义tabbar。登录后用户必须转到个人资料页面,然后我使用第二个方法,但在检查用户是否已通过此第一种方法登录之前 -

if([AppHelper userDefaultsForKey:@"user_id"].length>0)
    {
        [[AppDelegate getAppdelegate] createTabBar];
    }
那么你应该这样 -

-(void)createTabBar
{

    self.tabBarController=[[RXCustomTabBar alloc] init]; 
    self.tabBarController.customizableViewControllers = nil;   

    Home *homeObj =  [[Home alloc] initWithNibName:@"Home" bundle:nil];
    UINavigationController *tab1Controller = [[UINavigationController alloc] initWithRootViewController:homeObj];     

    ChatList *chatListObj = [[ChatList alloc] initWithNibName:@"ChatList" bundle:nil];
    UINavigationController *tab2Controller = [[UINavigationController alloc] initWithRootViewController:chatListObj];


    Settings *settingObj = [[Settings alloc] initWithNibName:@"Settings" bundle:nil];
    UINavigationController *tab3Controller = [[UINavigationController alloc] initWithRootViewController:settingObj];  

    self.tabBarController.viewControllers = [NSArray arrayWithObjects: tab1Controller, tab2Controller,tab3Controller, nil];
    self.tabBarController.selectedIndex=0;
    self.tabBarController.delegate = self;
    [self.tabBarController selectTab:0];

    self.window.backgroundColor=[UIColor clearColor];
    self.tabBarController.view.backgroundColor=[UIColor clearColor];

    [self.window addSubview: self.tabBarController.view];


}

在此之后如果你有任何问题,我会在这里。希望这会有所帮助。

答案 2 :(得分:0)

我会通过模态视图显示登录屏幕。在这种情况下,您可以在界面构建器中为第一个视图实现标签栏。