Отображение UIAlertView только при первом запуске приложения - PullRequest
1 голос
/ 03 ноября 2011

Что-то не так, когда я запускаю UIAlertView только в первый раз?В моем didFinishLaunchingWithOptions создается мой MainViewController.Таким образом, в viewDidLoad из MainViewController я делаю это:

BOOL shouldAlert = [[NSUserDefaults standardUserDefaults] boolForKey:@"ShowAlert"];
if (!shouldAlert) {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"MyAlert" message:@"Some text here" delegate:self cancelButtonTitle:@"Continue" otherButtonTitles: nil];
    [alert show];
    [alert release];
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"ShowAlert"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

Когда я пытаюсь установить его на устройстве, оно не работает, если дважды щелкнуть значок «домой» и нажать значок минуса рядом с приложением, чтобы удалить его изфоновый режим (я думаю, это то, что двойное нажатие делает правильно?).Потому что после этого снова появляется всплывающее окно.Если я этого не сделаю, то предупреждение показывается только один раз.Это ожидаемое поведение?Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 03 ноября 2011

вы впервые получаете yourAlert от пользователя defauls? Я думаю, что вы должны проверить, существуют ли пользовательские ошибки, иначе ваш bool НЕТ или ЛОЖЬ проверьте этот пример:

NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];
shouldAlert = YES; // define in the .h
if(userDef)
shouldAlert = [userDef boolForKey:@"ShowAlert"];
0 голосов
/ 03 ноября 2011

Попробуйте с целым числом (0/1). У меня тоже были проблемы с BOOL.

setInteger:forKey:
integerForKey:

EDIT Попробуйте обновить настройки по умолчанию, прежде чем начинать / показывать предупреждение.
И, пожалуйста, обновите имена переменных. Ваш код - чепуха с их текущим названием.

Попробуйте это:

NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
BOOL hasAlreadyBeenLaunched = [defaults boolForKey:@"HasAlreadyBeenLaunched"];

if (!hasAlreadyBeenLaunched) {
    [defaults setBool:YES forKey:@"HasAlreadyBeenLaunched"];
    [defaults synchronize];

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"MyAlert" message:@"Some text here" delegate:self cancelButtonTitle:@"Continue" otherButtonTitles: nil];
    [alert show];
    [alert release];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...