Почему я не могу запустить это модальное представление из didFinishLaunchingWithOptions? - PullRequest
1 голос
/ 22 марта 2011

Я пытаюсь сделать что-то довольно легко, по моей оценке:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    prefs =  [NSUserDefaults standardUserDefaults];
    BOOL IsLoggedIn = [prefs boolForKey:@"IsLoggedIn"];

    if(IsLoggedIn == NO)
    {
        //Show login controller
        LoginViewController *lvc = [[LoginViewController alloc] initWithNibName:nil bundle:nil];
        [self.tabBarController presentModalViewController:lvc animated:NO];
        [lvc release];
    }
    else if(IsLoggedIn == YES)
    {
        //Continue doing crap
    }

    // Override point for customization after application launch.
    // Add the tab bar controller's current view as a subview of the window
    self.window.rootViewController = self.tabBarController;

    NSArray *tabs =  self.tabBarController.viewControllers;
    UIViewController *tbInvoice = [tabs objectAtIndex:0];
    tbInvoice.tabBarItem.image = [UIImage imageNamed:@"Open-Mail.png"];
    UIViewController *tbClient = [tabs objectAtIndex:1];
    tbClient.tabBarItem.image = [UIImage imageNamed:@"Breifcase.png"];

    [self.window makeKeyAndVisible];
    return YES;
}

При использовании отладчика я вижу, что он вводит if(IsLoggedIn == NO) и запускает код LoginViewController, но представление никогда не показывает,

Это сводит меня с ума.

Я пытался запустить код после [self.windoow makeKeyAndVisible], но это ничего не изменило.

Этот код похож на каждый пример, который явидел.Кто-нибудь может увидеть, что я делаю не так?

Заранее спасибо,

Клиф

Ответы [ 2 ]

2 голосов
/ 11 ноября 2014

Я придумал это:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //...
    if(!loggedIn)
    {
        // Launch the app with login controller as the rootController
        self.window.rootViewController = loginController;

        // ...but switch to the original controller as soon as the UI is presented
        dispatch_async(dispatch_get_main_queue(), ^{
            self.window.rootViewController = originalRootController;

            // ...and silently present the login controller again with no noticeable changes
            [originalRootController presentViewController:loginController
                                                 animated:NO
                                               completion:NULL];
        });
    }
0 голосов
/ 22 марта 2011

Hpoe этот пост даст вам некоторое представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...