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.
doit-il être écrit dans un fichier, ou peut-il garder une valeur booléenne même lorsqu'il se ferme? –
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