我遇到了这样的情况,警报显示在屏幕的左上角(并被切断),如 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讨论,也不知道答案。我需要一些简单的草原程序员可以理解的东西。 苹果显然不认为这是一个错误,但是我不明白为什么,我当然也不知道如何解决。
感谢您提供一个很好的简单解决方案,或者至少是对我做错事情的简单描述。
答案 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?
我花了一些时间来理解它,但是一旦实现,它就可以工作。