2015-10-30 2 views
1

Кнопка вызывает предупреждение; предупреждение «одноразово», появляется один раз, но больше не появляется после того, как пользователь набрал «ОК».Boolean для UIAlertController Objective-C

Если логическое значение равно 0, срабатывает предупреждение; если оно равно 1, то предупреждение не запускается. Если пользователь нажимает «OK», значение BOOL устанавливается равным 1.

Каков наилучший способ установить одноразовое предупреждение в Objective-C?

+2

Техника, которую вы описали, кажется ОК. С чем конкретно вы сталкиваетесь? Можете ли вы показать код для своей попытки? – Paulw11

ответ

2

Я бы использовал NSUserDefaults для хранения булевого флага, о котором вы говорите. Как так:

static NSString * const AlertHasBeenShownUserDefaultsKey = @"AlertHasBeenShownUserDefaultsKey"; 

-(void)showAlert { 
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
    if (![userDefaults boolForKey:AlertHasBeenShownUserDefaultsKey]) { 
     //Show an alert 

     [userDefaults setBool:YES forKey:AlertHasBeenShownUserDefaultsKey]; 
    } 
} 

NSUserDefaults сохранит булево значение через запуски. Значение будет сброшено, если пользователь снова закроет приложение.

+0

Спасибо! Я пишу [self showAlert]; in viewDidLoad? Где поставить статическую константу? – Eric

+0

@ Эрик, это всего лишь пример кода. Вы можете называть это везде, где это уместно в вашем случае. Если вы хотите показать предупреждение, как только на экране появится какой-то «ViewController», вы можете вызвать этот метод (или просто использовать код из этого метода) внутри 'viewDidAppear', например. Я предлагаю 'viewDidAppear', потому что он вызывается, когда ViewController уже виден, а не просто загружен. Его можно назвать много раз. Но наш флаг в 'NSUserDefaults' позаботится о том, чтобы показывать предупреждение только один раз. – FreeNickname

+0

Вы правы. Я понял, где позвонить. Вы знаете, где я буду писать статическую константу в файле ViewController.m/.h? Должен ли я добавлять статическую константу в класс или просто объявлять переменную в @implementation? – Eric

Смежные вопросы