我正在尝试向我的应用添加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];
但这根本没有出现,我做错了什么?
答案 0 :(得分:27)
在故事板的初始视图控制器中,这必须位于viewDidAppear:
中。否则,如果在XIB中使用,它还会在viewWillAppear
和viewDidLoad
中显示提醒。
我在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];
它可以正常工作,但有些人可以获益。