Переход на TabBarController из appDelegate.m

Рейтинг: 0Ответов: 1Опубликовано: 16.01.2015

В appDelegate.m есть функция обработки URL схемы:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    NSLog(@"Я до проверки");
    if ([[url scheme] isEqualToString:@"my application"] == NO) return NO;
    NSLog(@"Я после проверки");
    NSDictionary *d = [self parametersDictionaryFromQueryString:[url query]];

    //От сюда нужно перейти к TabBarController (с возможностью перехода между View Таб бара)
    // Так же нужно вызвать функцию MyFunc с двумя параметрами которые передаются от сюда

    return YES;
}

Но я даже не понимаю, как установить таббар, как rootViewController.

Ответы

▲ 1

Программное создание таббара и вставка в него ваших контроллеров (навигейшены можно выбросить, если не нужны):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    //1 tab
    UIViewController *vс1 = [[ViewController alloc] initWithNibName:@"ViewController" bundle: nil];
    UINavigationController *n1 = [[UINavigationController alloc] initWithRootViewController: vс1];

    //2 tab
    UIViewController *vс2 = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    UINavigationController *n2 = [[UINavigationController alloc] initWithRootViewController: vс2];

    //3 tab
    UIViewController *vc3 = [[ViewController alloc] initWithNibName:@"ViewController" bundle: nil];
    UINavigationController *n3 = [[UINavigationController alloc] initWithRootViewController: vc3];

    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = @[n1, n2, n3];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

Метод у вьюконтроллера лучше вызвать уже в нем в зависимости от того, что нужно сделать, у Вас масса методов, когда Вы можете это сделать:

Создание

-init
-initWithNibName:

Создание view

-loadView
-viewDidLoad
-initWithFrame:
-initWithCoder:

Обработка изменения состояния view

-viewDidLoad
-viewWillAppear:
-viewDidAppear:
-viewWillDisappear:
-viewDidDisappear:
-viewDidUnload

Обработка memory warning

-didReceiveMemoryWarning

Уничтожение

-viewDidUnload
-dealloc