iOS 报错Attempt to present...whose view is not in the window hierarchy!

Attempt to present <*ViewController: 0x**> on <ViewController: 0x**> whose view is not in the window hierarchy!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#简单来说,就是当前的ViewController还没有被加载完,就调用了另外一个ViewController,这显然是不允许的。
事例:
- (void)viewDidLoad {
[super viewDidLoad];
TestVC *vc = [[TestVC alloc]init];
[self presentViewController:vc animated:NO completion:nil];
}

第一种:在-(void)viewDidAppear:(BOOL)animated;里实现新的控制器跳转。

第二种:延时跳转:
- (void)viewDidLoad {
[super viewDidLoad];
[NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(jump) userInfo:nil repeats:NO];
}
这种方法可以用,但是不推荐,因为这个延时有可能太长了。

第三种:在主线程上执行指定的方法
- (void)viewDidLoad {
[super viewDidLoad];
[self performSelectorOnMainThread:@selector(jump) withObject:nil waitUntilDone:NO];
}或
[[NSOperationQueue mainQueue] addOperationWithBlock:^{

}];

-------------本文结束感谢您的阅读-------------
最近的文章

iOS 屏幕截图总结

按屏幕截图,即全屏截图12345678910111213141516- (void)doScreenShot&#123; &#x2F;&#x2F; 开启图片上下文 UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, …

继续阅读
更早的文章

iOS ImageView加载多图动画

12345678910111213141516171819202122232425262728293031- (void)startAnimationView&#123; &#x2F;&#x2F;创建UIImageView,添加到界面 UIImage *image &#x3D; [UII …

继续阅读