iOS 8 viewDidLoad模式演示会导致多个演示

iOS 8 viewDidLoad模式演示会导致多个演示,ios,objective-c,iphone,swift,Ios,Objective C,Iphone,Swift,因此,我有一个屏幕,用于检查某些属性,在定义的情况下,将立即在当前加载的视图上以模式加载另一个视图,而不显示动画(以便不显示下面的视图)。在iOS 8之前完成此操作时,原始视图将暂停其加载(不会继续进行视图将出现,视图显示布局子视图等),直到覆盖控制器被解除。我发现这种行为适合我的需要,因为在原始视图中元素上的任何动画都可以完成。然而,在iOS 8中,我得到了一个完全不同的事件链。首先,由于某种原因,viewDidLayoutSubviews被调用了两次(这是怎么回事?),但更重要的是,视图不喜

因此,我有一个屏幕,用于检查某些属性,在定义的情况下,将立即在当前加载的视图上以模式加载另一个视图,而不显示动画(以便不显示下面的视图)。在iOS 8之前完成此操作时,原始视图将暂停其加载(不会继续进行
视图将出现
视图显示布局子视图
等),直到覆盖控制器被解除。我发现这种行为适合我的需要,因为在原始视图中元素上的任何动画都可以完成。然而,在iOS 8中,我得到了一个完全不同的事件链。首先,由于某种原因,
viewDidLayoutSubviews
被调用了两次(这是怎么回事?),但更重要的是,视图不喜欢在
ViewDidDisplay
出现之前的任何时候弹出另一个控制器,抱怨对开始/结束外观转换的调用不平衡。不仅如此,底层的
viewController
还在继续加载(
viewwillbeen
viewdilayoutsubviews
等),即使它没有显示,这会导致触发这些事件中的所有方法。我很感激苹果公司是否更新了实现这一目标的方式,因此,如果新的meta是一个完全不同的过程,我愿意采用,然而,事实上,我无法让它正常工作

如果您能帮助我将这个模态视图插入到interject中,而不会导致底层视图继续加载,我将不胜感激

谢谢,
迈克

更新:将引入一些代码。下面是主
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
中调用此处的演示文稿,将导致演示VC的演示文稿继续。在iOS 8之前,如果尚未呈现,呈现VC将暂停,直到模态VC被解除,然后将像往常一样完成。根据我最初的帖子,iOS 8的情况并非如此。

苹果对iOS 8的规定更加严格。举一个例子,我将阐述我的观点:-在我的应用程序中,我曾经从导航堆栈中弹出一些视图控制器,然后按下一个新的,但在ios7中从未见过这种弹出,只出现了一个推送转换(从逻辑上讲,应该看到弹出,然后按下)。在ios 8中,这种情况发生了变化。现在,只有在看到并注意到砰砰声后才能看到推。这严重破坏了用户体验

我在其他领域也注意到了这种严格性,但这些领域与UI/UX无关,所以我现在就不详细介绍了

就你的情况而言,根据我的经验,我可以告诉你,你一直在以错误的方式做事。随着苹果的严格执行,您的实施似乎要中断。 在我看来,唯一的解决办法是将每个签入视图都移动

如果您希望继续之前对ios7所做的操作,您可以使用以下检查:

    if([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
{
  // Code for ios 8 implementation
}
else
{
  // Code for ios 7 implementation
}
虽然我建议你避免,因为你的目标是完全可以实现的。
此外,您所做的操作很容易导致导航堆栈不一致,从而导致应用程序崩溃。

您是否可以添加一些代码以使这个故事更易于理解?@Sjors添加了一些代码,但我担心我的解释会使它更加复杂!是否尝试将此块从
viewdiload
移动到
viewwillbeen
?@sha这样做将不会得到所需的结果。我们的想法是在显示屏幕之前插入一个视图。awakeFromNib怎么样?不知道为什么会被否决。如果苹果改变了内部规则,我们需要知道。我现在正在处理一个问题(),我想知道我是否会被卷入类似的网络。哇!被否决了!至少我的尝试应该得到投票否决的答复。非常不负责任。