2009-08-17 6 views
0

Wie kann ich meine Anwendung nur anzeigen lassen, wenn sie die Anwendung zum ersten Mal starten. Beispiel: Sie öffnen meine App, es wird eine Warnung angezeigt, die besagt: "Möchten Sie das Tutorial spielen?" Wenn sie die App schließen und sie dann erneut öffnen, wird sie nicht mehr angezeigt.iPhone Einmalige Ereignisse Programmierung

Dank

Antwort

1

Ich empfehle NSUserDefaults Verwendung würde:

- (void)openOneTime 
{ 
    NSUserDefaults*  defaults = [NSUserDefaults standardUserDefaults]; 
    static const NSString* kKey = @"One Time Key"; 
    NSObject*    keyValue = [defaults objectForKey:kKey]; 

    if (keyValue == nil) 
    { 
     [self doMyOneTimeThing]; // pop a dialog, etc... 
    } 

    // Adds an object for our key which will get found the next time around, 
    // bypassing the above code block. The type and value of the object is 
    // not important; what matters more is that an object exists for that 
    // key at all. 

    [defaults setBool:YES forKey:kKey]; 
} 
0

Sie könnten in Ihrem Eigenschaftsspeicher speichern einen Booleschen Wert zu sagen, ob es das erste Mal ist oder nicht, dann ist das Start auf Anfrage überprüfen.

1

Weitere Tipps zum Speichern von Daten persistent:

Methode 1: Verwenden Sie das globale System Benutzereinstellungen. Sie können dies tun, aber es könnte als etwas hacky angesehen werden, da es Benutzereinstellungen speichern soll, und ich denke, dies ist ein grauer Bereich, da der Benutzer hier keine explizite Kontrolle hat. Lesen Sie in jedem Fall die Dokumentation für NSUserDefaults, um herauszufinden, wie das geht.

Methode 2: Schreiben Sie in eine Datei, deren Existenz angibt, ob das Lernprogramm angezeigt wurde oder nicht. Sie können problemlos eine Datei mit einem NSData-Objekt erstellen, indem Sie die Methode writeToFile:atomically: aufrufen. Später können Sie die Klasse NSFileManager verwenden, um zu überprüfen, ob diese Datei existiert oder nicht.

Beispielcode:

- (NSString*) filename { 
    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                 NSUserDomainMask, YES); 
    NSString* documentsDirectory = [paths objectAtIndex:0]; 
    return [documentsDirectory stringByAppendingPathComponent:@"notFirstTime"]; 
} 

- (void) setNotFirstTime { 
    NSData* data = [[[NSData alloc] init] autorelease]; 
    [data writeToFile:[self filename] atomically:YES]; 
} 

- (BOOL) isNotFirstTime { 
    return [[NSFileManager defaultManager] fileExistsAtPath:[self filename]]; 
}