Как показать UIViewController при первом запуске приложения? - PullRequest
0 голосов
/ 11 января 2012

Я хочу знать, как отобразить страницу при самом первом запуске приложения, у меня был поиск для них и много кода, но в моем случае это не работает для меня, у меня есть этот код в DidFinishLaunching Method,

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  [[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],@"firstLaunch",nil]];

    //If First Launch
    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]) {
        //Show help view
        UIScrollView_PagingViewController *detailViewController = [[UIScrollView_PagingViewController alloc] initWithNibName:@"UIScrollView_PagingViewController" bundle:nil];

        //detailViewController.firstString = firstString;
        // ...
        // Pass the selected object to the new view controller.

        [self.navigationController pushViewController:detailViewController animated:YES];

        [detailViewController release];

    }
    else {
    NSError *error = nil;
    NSString *username = [[NSUserDefaults standardUserDefaults] objectForKey:@"username"];
    NSString *str =  [SFHFKeychainUtils getPasswordForUsername:username andServiceName:@"mybibleapp" error:&error];
    NSLog(@"previous user");

    NSLog(@"%@", str);

    if (!error && nil != str)
    {
        ParallelReadViewController *detailViewController = [[ParallelReadViewController alloc] initWithNibName:@"ParallelReadViewController" bundle:nil];

        //detailViewController.firstString = firstString;
        // ...
        // Pass the selected object to the new view controller.

        [self.navigationController pushViewController:detailViewController animated:YES];

        [detailViewController release];
    }
    else
    {
        RootViewController *detailViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];

        //detailViewController.firstString = firstString;
        // ...
        // Pass the selected object to the new view controller.

        [self.navigationController pushViewController:detailViewController animated:YES];

        [detailViewController release]; 
    }
}

но когда я запускаю этот код, он показывает пустой белый экран, ничего не показывает.

[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],@"firstLaunch",nil]];

        //If First Launch
        if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]) {
            //Show help view
            UIScrollView_PagingViewController *detailViewController = [[UIScrollView_PagingViewController alloc] initWithNibName:@"UIScrollView_PagingViewController" bundle:nil];

            //detailViewController.firstString = firstString;
            // ...
            // Pass the selected object to the new view controller.

            [self.navigationController pushViewController:detailViewController animated:YES];

            [detailViewController release];

        }
        else {

Я положил приведенный выше код для запуска UIScrollView_PagingViewController для запуска. Но не повезло. Чтоэто ошибка, которую я сделал в приведенном выше коде.?. Пожалуйста, помогите мне.Заранее спасибо.

Ответы [ 4 ]

0 голосов
/ 11 января 2012

Просто сделайте trcik, не помещайте этот код в AppDelegate, постарайтесь сохранить ваш appdelegate настолько чистым, насколько это возможно для лучшей производительности.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    [window addSubview:navigationController.view];
    [window makeKeyAndVisible];

    return YES;
}

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

- (void)viewWillAppear:(BOOL)animated
{
  [super viewWillAppear:YES];
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],@"firstLaunch",nil]];

    //If First Launch
    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]) {
        //Show help view
        UIScrollView_PagingViewController *detailViewController = [[UIScrollView_PagingViewController alloc] initWithNibName:@"UIScrollView_PagingViewController" bundle:nil];

        //detailViewController.firstString = firstString;
        // ...
        // Pass the selected object to the new view controller.

        [self.navigationController pushViewController:detailViewController animated:NO];

        [detailViewController release];

    }
    else {
    NSError *error = nil;
    NSString *username = [[NSUserDefaults standardUserDefaults] objectForKey:@"username"];
    NSString *str =  [SFHFKeychainUtils getPasswordForUsername:username andServiceName:@"mybibleapp" error:&error];
    NSLog(@"previous user");

    NSLog(@"%@", str);

    if (!error && nil != str)
    {
        ParallelReadViewController *detailViewController = [[ParallelReadViewController alloc] initWithNibName:@"ParallelReadViewController" bundle:nil];

        //detailViewController.firstString = firstString;
        // ...
        // Pass the selected object to the new view controller.

        [self.navigationController pushViewController:detailViewController animated:NO];

        [detailViewController release];
    }
    else
    {
       // RootViewController *detailViewController = [[RootViewController alloc] //initWithNibName:@"RootViewController" bundle:nil];

        //detailViewController.firstString = firstString;
        // ...
        // Pass the selected object to the new view controller.

       // [self.navigationController pushViewController:detailViewController //animated:NO];

        //[detailViewController release]; 
    }
}
0 голосов
/ 11 января 2012

Вы пытаетесь нажать на этот контроллер в первый раз, но в роу нет никакого контроллера.поэтому вы должны сначала добавить в окно.тогда вы можете нажать UIViewController

self.window.rootViewController = detailViewController.view;

, чтобы не выпускать viewController перед использованием.

0 голосов
/ 11 января 2012

попробуйте

        if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]) 
    {

     UIScrollView_PagingViewController *detailViewController =[[UIScrollView_PagingViewController alloc] initWithNibName:@"UIScrollView_PagingViewController" bundle:nil];

                    //detailViewController.firstString = firstString;
                    // ...
                    // Pass the selected object to the new view controller.

   self.navController=[[UINavigationController alloc] initWithRootViewController:detailViewController];
    self.window.rootViewController=self.navController;

                }
0 голосов
/ 11 января 2012

Вы не размещаете код в нужном месте. Не помещайте этот код в AppDelegate, старайтесь поддерживать его appdelegate настолько чистым, насколько это возможно, для лучшей @performance. Используйте некоторый ViewController, который получит вызов после заставки и проверьте, работает ли там ваш код.

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