Thomas Farmer
Thomas Farmer

Reputation: 11

Open different view on initial run

I'm trying to make my app launch a different view on the first time it is loaded up. I've got this code at the moment which implements that something should happen when the app is first launched. I've got this code but it lacks the code to open Initialviewviewcontroller. I have no idea how to do this so help would be much appreciated

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
 BOOL hasRunBefore = [defaults boolForKey:@"FirstRun"];

 if (!hasRunBefore) {
[defaults setBool:YES forKey:@"FirstRun"];
[defaults synchronize];
// what goes here??

else
{
NSLog (@"Not the first time this controller has been loaded");

So I should launch a different view controller in the if statement. But what should I put ?

Upvotes: 1

Views: 103

Answers (1)

cojoj
cojoj

Reputation: 6475

Solution No. 1

I've written a simple snippet for this thing because I use it quite a lot. You can find it here.
Feel free to use it, fork it or modify it!


Solution No. 2

You can do something like this in your AppDelelegate.m

Add this simple method at the bottom:

- (BOOL)hasEverBeenLaunched
{
    // A boolean which determines if app has eer been launched
    BOOL hasBeenLaunched;

    // Testig if application has launched before and if it has to show the home-login screen to login
    // to social networks (facebook, Twitter)
    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasAlreadyLaunched"]) {
        // Setting variable to YES because app has been launched before
        hasBeenLaunched = YES;
        // NSLog(@"App has been already launched");
    } else {
        // Setting variable to NO because app hasn't been launched before
        hasBeenLaunched = NO;
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasAlreadyLaunched"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        // NSLog(@"This is the first run ever...");
    }

    return hasBeenLaunched;
}

After implementation of this method you can use it like that:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Determining Storyboard identifier for first view
    NSString *storyboardID = [self hasEverBeenLaunched]? @"MainView" : @"LoginView";
    // Setting proper view as a rootViewController
    self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:storyboardID];

    return YES;
}

Upvotes: 2

Related Questions