Создать представление действия, которое будет отображаться только при первом запуске приложения - PullRequest
0 голосов
/ 05 февраля 2011

Я просто пытаюсь отобразить вид действия при первом запуске приложения, но я не уверен, как это сделать.

Я понимаю, что его нужно ввести в

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

Я создал вид действия, но не знаю, как отобразить его только в первый раз и больше никогда.

1 Ответ

0 голосов
/ 05 февраля 2011

Ваше приложение, если вам нужно будет помнить, было ли оно запущено или нет ранее, чтобы вы могли показать действие или нет. Один из способов сделать это - сохранить логическое значение в файле при выходе из приложения и прочитать его при запуске приложения (и, если оно существует, приложения запускались раньше). Вот код, который делает что-то вроде этого (поместите его в делегат приложения).

- (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];
}

для сохранения и вот код для загрузки ...

- (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;
}

Также обратите внимание, что если вы работаете в симуляторе, этот код не будет выполняться, если вы выйдете из симулятора, вам на самом деле придется нажать кнопку «Домой», как пользователь iPhone.

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