我想从一个显示警报消息viewDidLoad()
的方法,ViewController.m
从替代viewDidAppear()
方法.
这是我的代码:
- (void)viewDidLoad { [super viewDidLoad]; //A SIMPLE ALERT DIALOG UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"My Title" message:@"Enter User Credentials" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"Cancel", @"Cancel action") style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { NSLog(@"Cancel action"); }]; UIAlertAction *okAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", @"OK action") style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { NSLog(@"OK action"); }]; [alert addAction:cancelAction]; [alert addAction:okAction]; [self presentViewController:alert animated:YES completion:nil]; }
我收到此错误:
警告:试图提出
对
他们的看法是不是在窗口层次!
Woodstock.. 22
确定不是错误,问题是在viewDidLoad
视图层次结构中没有完全设置.如果使用viewDidAppear
,则设置层次结构.
如果你真的想要调用这个警报viewDidLoad
你可以通过在这个GCD块中包装你的演示调用来引起轻微的延迟,等待下一个运行循环,但是我建议你不要(它很难看).
dispatch_async(dispatch_get_main_queue(), ^ { [self presentViewController:alert animated:YES completion:nil]; });
小智.. 9
将此调用移至viewDidAppear:方法.
确定不是错误,问题是在viewDidLoad
视图层次结构中没有完全设置.如果使用viewDidAppear
,则设置层次结构.
如果你真的想要调用这个警报viewDidLoad
你可以通过在这个GCD块中包装你的演示调用来引起轻微的延迟,等待下一个运行循环,但是我建议你不要(它很难看).
dispatch_async(dispatch_get_main_queue(), ^ { [self presentViewController:alert animated:YES completion:nil]; });
将此调用移至viewDidAppear:方法.