UIAlertController вообще не появляется

Я пытаюсь добавить UIAlertController в мое приложение, но оно не появляется вообще. Я пробовал следующее:

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Message" message:@"Web Service is not available." preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];
[alertController addAction:ok];

[self presentViewController:alertController animated:YES completion:nil];

но это вообще не появляется, что я делаю не так?

2 ответа

Решение

В контроллере исходного представления раскадровки это должно быть в viewDidAppear:, В противном случае, если используется в XIB, он также покажет предупреждение в viewWillAppear а также viewDidLoad,

Я запустил ваш код в шаблоне приложения Single View в iOS 8 и 9, поместив ваш код в заданный ViewController, в следующем представлении обратных вызовов жизненного цикла:

  • viewDidAppear - удалось
  • viewWillAppear - оповещение не отображается; В результате получился вывод в консоли: Внимание! Попытка представить чей вид не находится в иерархии окон!
  • viewDidLoad - оповещение не отображается; В результате получился вывод в консоли: Попытка загрузить представление контроллера представления, пока он освобождается, не разрешена и может привести к неопределенному поведению ().
- (void)showMessage:(BOOL)animated {

UIAlertController *alertController = [UIAlertController  alertControllerWithTitle:@"Do not leave any Field Empty"  message:nil  preferredStyle:UIAlertControllerStyleAlert];

[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
    [self dismissViewControllerAnimated:YES completion:nil];
}]];
[self present:alertController animated:YES completion:nil];

}

где я называю этот метод

        [self showMessage:YES];

это работает хорошо, может кто-то получить выгоду.

Другие вопросы по тегам