在ViewBarController之上推送ViewController

时间:2012-03-28 13:26:13

标签: ios login uitabbarcontroller

我遇到了一个我真不知道如何解决的问题:

我在AppDelegate中定义了一个TabBarController。

 UITabBarController *tabBarController = [[UITabBarController alloc] init];

在这个TabBarController中我有几个其他的NavigationControllers里面有UiVieController:

ProgramController *programContr = [[ProgrammController alloc] init];
UINavigationController navControllerPro = [[UINavigationController alloc] initWithRootViewController:programContr];

ManualController *manualContr = [[ManualController alloc] init];
UINavigationController navControllerMan = [[UINavigationController alloc] initWithRootViewController:manualContr];

我将NavigationController添加到TabBarController:

tabBarController.viewControllers = [NSArray arrayWithObjects:navControllerPro,navControllerMan, nil]; 

我将tabBarController设置为rootViewController:

self.window.rootViewController = tabBarController;
[[self window] makeKeyAndVisible];

工作正常。 现在我想在其上添加一个“登录屏幕”。 我是这样做的:

[tabBarController presentModalViewController:navControllerLogin animated:YES];

现在TabBarController在后台加载其内容,即使LoginViewController在前面也是如此。如果在LoginViewController上按下按钮,如何加载TabBarController?

请帮帮我。

1 个答案:

答案 0 :(得分:1)

每次都会加载标签栏控制器,因为您将其设置为rootViewController。

你应该将普通的viewController设置为root ...如果登录成功,你应该调用tabBarController来加载。

换句话说,在appDelegate中应该只有登录窗口..而在loginViewController中,如果登录正常,你应该调用并加载你的tabBarController及其所有控制器..使用storyboard使它变得容易很多