Ios UIAlertController根本不出现

Ios UIAlertController根本不出现,ios,objective-c,uialertcontroller,Ios,Objective C,Uialertcontroller,我正在尝试向我的应用程序添加一个UIAlertController,但它根本没有出现。我尝试了以下方法: UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Message" message:@"Web Service is not available." preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction* ok

我正在尝试向我的应用程序添加一个
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];

但这根本没有出现,我做错了什么?

在故事板的初始视图控制器中,这必须在
视图中出现:
。否则,如果在XIB中使用,它还将在
viewwillbeen
viewDidLoad
中显示警报

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

  • viewdide出现
    -成功
  • 视图将出现
    -未显示警报;在控制台中导致此输出:警告:尝试显示其视图不在窗口层次结构中的对象
  • viewDidLoad
    -未显示警报;在控制台中导致此输出:不允许在视图控制器解除分配时尝试加载视图控制器的视图,这可能会导致未定义的行为()
}

我把这个方法叫做

        [self showMessage:YES];

它运行良好,可能会有人从中受益。

此代码应该运行良好。你能告诉我们这个片段出现的上下文的其余部分吗?你发布的代码看起来应该可以工作。您用来显示该警报的方法是什么样的?该方法被调用了吗?您是否试图在主线程之外显示此警报控制器?您是否从视图控制器中演示它?您是否收到任何错误?为什么要在viewDidLoad中显示警报控制器?如果您正在加载一个视图,但没有必要显示它,该怎么办?要回答第一个问题,您可能希望在视图出现时立即显示警报。然而,我只是简单地提到,如果麦格纳的代码在
viewDidLoad
中。我刚刚尝试将他的代码放入iOS 9中带有情节提要(单视图应用程序模板)的
viewDidLoad
方法中,但我得到了一个错误:不允许在视图控制器解除分配时尝试加载视图,可能会导致未定义的行为()。我将展开我的答案并进行一些解释。视图出现时不会立即调用viewDidLoad。这将是一个很好的选择。是的,在视图加载时在视图上显示视图控制器是没有意义的。我的意思是它会立即显示。而且,我认为问题不在于什么是有意义的。这是关于从UIAlertViewController引用中获得一个警报来显示。我使用了相同的方法,但它甚至没有显示ViewDidDisplay(),所以是否有任何原因,我们需要显示限制用户,我们可以调用任意位置作为我们调用uialertview的任意位置任何类或方法,为什么我们不调用它。???
        [self showMessage:YES];