заставка iOS с кнопками - PullRequest
0 голосов
/ 08 июня 2011

Я новичок в iOS dev. У меня есть заставка, и я хочу заменить ее на начальный вид, я имею в виду изображение и две кнопки. Как я могу настроить начальный вид? Я использую Xcode 4 с iOS 4. Вот мой код ...

- (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];

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]];
[hemView release];


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]];
[sdkView release];



NSArray * arrayOfControllers = [[NSArray alloc] initWithObjects:homeNavigationController, sdkNavigationController, nil];
tabController.viewControllers = arrayOfControllers;

SplashScreenViewController *controller = [[SplashScreenViewController alloc] init];
[tabController presentModalViewController:controller animated:YES];
[controller release];


[self.window makeKeyAndVisible];
[window addSubview:tabController.view];


[homeNavigationController release];
[sdkNavigationController release];
[appController release];
return YES;
}

Но этот код не показывает заставку, он ведет меня прямо к контроллеру HomeView, помогите, пожалуйста.

1 Ответ

0 голосов
/ 09 мая 2012

(Внимание, код на основе 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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...