所以我有一个屏幕,会检查某些属性,并在定义的情况下立即在
viewDidLoad
中模态地加载另一个视图,没有动画,在当前加载的视图上(不显示底下的视图)。在iOS 8之前,当这样做时,原始视图会暂停其加载(不会进行viewWillAppear
,viewDidLayoutSubviews
等),直到覆盖控制器被解除。我发现这种行为适合我的需求,因为可以对原始视图中的元素进行任何动画。然而,在iOS 8中,我得到了完全不同的事件链。首先,在某些情况下,viewDidLayoutSubviews
会被调用两次(这是怎么回事?)但更重要的是,视图在viewDidAppear
之前不喜欢弹出另一个控制器,抱怨未平衡的调用开始/结束出现转换
。不仅如此,但底层的viewController
继续它的加载(viewWillAppear
, viewDidLayoutSubviews
等),尽管它没有显示,导致这些事件中的所有方法都触发。如果苹果已经更新了实现这样的内容的方式,我会感激,因此,如果新的元数据是完全不同的过程,我愿意采用,但是,现在我无法使这个工作适当。
我希望您能帮助我如何让此模态视图插入而不会导致底层视图继续加载。
谢谢,
Mike
更新:将会带来一些代码。以下是主viewController
的viewDidLoad
,如果需要,它会呈现模态VC。
-(void) viewDidLoad{
if(hasNotSeenTutorial){
TutVC* vc = [[TutVC alloc] initWithNibName:@"tutNib" bundle:nil]
vc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self.navigationController presentViewController:vc animated:NO completion:^{
NSLog(@"Has Completed Presentation");
}];
}
}
问题就在这里。在viewDidLoad
中调用演示文稿会导致呈现视图控制器的继续。 在iOS 8之前,如果尚未呈现显示VC,则会暂停,直到模态VC已被解除,然后它将像往常一样完成。但是,在iOS 8中情况并非如此,正如我的原始帖子所述。
viewDidLoad
移到viewWillAppear
吗? - shaawakeFromNib
怎么样? - shaif (hasNotSeenTutorial)
。 - Aaron Brager