(Внимание, код на основе ARC ... не забудьте выпустить). Я сделал это так:
Сначала я поставил SplashScreenViewController
*controller
и tabController
в качестве свойствappDelegate
.
Затем я изменяю didFinishLaunchingWithOption
, чтобы отображать только SplashScreenViewController
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UIView *backgroundView = [[UIView alloc] initWithFrame: window.frame];
backgroundView.backgroundColor = [UIColor lightGrayColor];
[window addSubview:backgroundView];
[backgroundView release];
// Override point for customization after application launch.
DataController *appController = [DataController sharedObject];
[self controller] = [[SplashScreenViewController alloc] init];
[[self controller]setAppDelegate:self];
self.window.rootViewController = self.controller;
[self.window makeKeyAndVisible];
return YES;
}
, поэтому в вашем SplashScreenViewController
добавьте свойство appDelegate, указывающее на ваше приложение appDelegate
.
Затем делайте то, что вы хотите, на своем экране-заставке (вход, кнопка и т. Д.). В этом примере это простая кнопка входа.Когда вы нажимаете на кнопку, она вызывает функцию в вашем appDelegate
- (IBAction)loginButton:(id)sender
{
[[self appDelegate]setMainTabBarControllerOnScreen];
}
Эта функция теперь загружает tabBarController и удаляет экран входа в экранную заставку
self.tabController = [[UITabBarController alloc] init];
HomeViewController *hemView = [[HomeViewController alloc] init];
[hemView setTitle:@"Hem"];
hemView.tabBarItem.image = [UIImage imageNamed:@"icon_home.png"];
UINavigationController *homeNavigationController = [[UINavigationController alloc] initWithRootViewController:hemView];
[homeNavigationController.navigationBar setTintColor:[UIColor colorWithRed:(0.96) green:(0.96) blue:(0.96) alpha:0.0]];
SearchViewController *sdkView = [[SearchViewController alloc] init];
[sdkView setTitle:@"Search"];
sdkView.tabBarItem.image = [UIImage imageNamed:@"icon_search.png"];
UINavigationController *sdkNavigationController = [[UINavigationController alloc] initWithRootViewController:sdkView];
[sdkNavigationController.navigationBar setTintColor:[UIColor colorWithRed:(0.96) green:(0.96) blue:(0.96) alpha:0.0]];
NSArray * arrayOfControllers = [[NSArray alloc] initWithObjects:homeNavigationController, sdkNavigationController, nil];
self.tabController.viewControllers = arrayOfControllers;
И воттрюк
[[self window] addSubview:self.tabController.view];
[[self window]setRootViewController:[self tabController]];
[[[self viewController]view] removeFromSuperview];