2011-02-04 3 views
0

J'essaie simplement d'afficher une vue d'action la toute première fois que l'application est ouverte, mais je ne suis pas sûre de savoir comment la créer.Créer une vue d'action pour afficher uniquement la première fois

Je comprends qu'il doit être mis en

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

J'ai la vue d'action créé, mais je ne sais pas comment il a afficher uniquement sur la première fois, et jamais plus.

Répondre

0

Votre application si vous devez vous rappeler si elle a été lancée ou non auparavant, vous pouvez afficher ou non la vue d'action. Une façon de le faire est de sauvegarder un booléen dans un fichier à la sortie de l'application et de le relire au lancement de l'application (et s'il existe, les applications ont déjà été lancées). Voici un code qui fait quelque chose comme ça (mettez-le dans votre délégué d'application).

- (void)applicationWillResignActive:(UIApplication *)application { 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"saved_data.dat"]; 
NSMutableData *theData = [NSMutableData data]; 
NSKeyedArchiver *encoder = [[NSKeyedArchiver alloc] initForWritingWithMutableData:theData]; 
BOOL launched = YES; 
[encoder encodeBool:launched forKey:@"launched"]; 
[encoder finishEncoding]; 

[theData writeToFile:path atomically:YES]; 
[encoder release]; 
} 

pour sauver et voici le code pour le chargement ...

- (id) init { 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"saved_data.dat"]; 

NSFileManager *fileManager = [NSFileManager defaultManager]; 
if([fileManager fileExistsAtPath:path]) { 
    //open it and read it 
    NSLog(@"data file found. reading into memory"); 

    NSData *theData = [NSData dataWithContentsOfFile:path]; 
    NSKeyedUnarchiver *decoder = [[NSKeyedUnarchiver alloc] initForReadingWithData:theData]; 

    BOOL launched = [decoder decodeBoolForKey:@"launched"]; 
if (launched) { 
//APP HAS LAUNCHED BEFORE SO DON"T SHOW ACTIONVIEW 
} 

    [decoder finishDecoding]; 
    [decoder release]; 
} else { 
    NSLog(@"no data file found."); 
    //APP HAS NEVER LAUNCHED BEFORE...SHOW ACTIONVIEW 
} 
return self; 
} 

Notez également que si votre course dans le simulateur ce code ne sera pas exécuté si vous quittez le simulateur, vous avez réellement appuyer sur le bouton d'accueil comme un utilisateur d'iPhone le ferait.

+0

doit-il être écrit dans un fichier, ou peut-il garder une valeur booléenne même lorsqu'il se ferme? –

+0

Il doit être sauvegardé d'une manière ou d'une autre du lancement au lancement (peut-être pas en arrière-plan et en reprise mais définitivement lorsqu'il est complètement fermé). L'enregistrement dans un fichier semble être la meilleure solution pour moi. – Nitrex88

Questions connexes