UIAlertController位置错误

时间:2018-09-08 17:58:22

标签: ios objective-c cocoa-touch uialertcontroller

我遇到了这样的情况,警报显示在屏幕的左上角(并被切断),如 UIAlertController is moved to buggy position at top of screen when it calls `presentViewController:`

我的代码是从Apple文档中复制并粘贴的:

- (void) alertHere
{

    UIAlertController* alert = [UIAlertController 
alertControllerWithTitle:@"My Alert"
                message:@"This is an alert."

   preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
                handler:^(UIAlertAction * action) {}];

    [alert addAction:defaultAction];

    [self presentViewController:alert animated:YES 
    completion:nil];
}

我从UIViewController调用它。

我只是不理解上面提到的stackoverflow讨论,也不知道答案。我需要一些简单的草原程序员可以理解的东西。 苹果显然不认为这是一个错误,但是我不明白为什么,我当然也不知道如何解决。

感谢您提供一个很好的简单解决方案,或者至少是对我做错事情的简单描述。

2 个答案:

答案 0 :(得分:1)

根据此信息

Attempt to present UIViewController on UIViewController whose view is not in the window hierarchy

您似乎从alertHere拨打了viewDidLoad,因此为了解决问题,您必须在ViewDidAppear中称呼它。

答案 1 :(得分:1)

答案就在这里:How to present UIAlertController when not in a view controller?

我花了一些时间来理解它,但是一旦实现,它就可以工作。