UIAlertController根本没有出现

时间:2015-09-27 04:13:09

标签: ios objective-c 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 个答案:

答案 0 :(得分:27)

在故事板的初始视图控制器中,这必须位于viewDidAppear:中。否则,如果在XIB中使用,它还会在viewWillAppearviewDidLoad中显示提醒。

我在iOS 8和9中的单视图应用程序模板中运行了代码,在以下视图生命周期回调中将代码放入给定的ViewController,

  • viewDidAppear - 已成功
  • viewWillAppear - 未显示警报;在控制台中导致此输出:警告:尝试显示其视图不在窗口层次结构中!
  • viewDidLoad - 未显示警报;在控制台中导致此输出:不允许在取消分配时尝试加载视图控制器的视图,并且可能导致未定义的行为()。

答案 1 :(得分:0)

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

它可以正常工作,但有些人可以获益。