1

我想仅在第一次显示主视图控制器时显示视图一次。如何防止在另一个视图控制器中显示视图控制器时出现闪烁

-(void) viewDidAppear:(BOOL)animated 
{ 
    if (!self.isMainViewShowedBefore) 
    { 
     self. self.isMainViewShowedBefore = YES; 

     UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController: temporaryViewController]; 

     [self presentViewController:navigationController animated:NO completion:NULL]; 
    } 
} 

它可以正常工作,但临时视图控制器显示之前短暂出现主屏幕。

我试图在viewWillAppear中添加上面的代码,但我得到了以下错误

“NSInternalInconsistencyException”,理由是:“试图从开始到 一个 模式转变而转变已经在 进展。等待viewDidAppear/viewDidDisappear知道当前 过渡已经完成了”

如何隐藏主控制器显示在临时视图控制器之前?

回答

0

您在viewWillAppear中得到了错误,因为您无法在iOS中同时执行两个动画,它可能会让您的应用程序崩溃,但大部分时间iOS对我们很好,它只是给我们一个警告。

现在我主要关心的是,为什么要添加这个主视图控制器,如果你根本不想使用它?这不闪烁,这是一个正常的行为,如果你想UINavigationController出现,只需播种它而不是这个“主视图控制器”。

如果你有更多隐藏的逻辑会阻止你做我说的话,请告诉我。

+0

这是一个照片应用程序,我想裁剪时加载第一次的照片。 – zontragon 2014-09-01 20:22:04

+0

和作物视图控制器是第三方控制器,我不想改变它 – zontragon 2014-09-01 20:24:08

1

添加temporaryViewController.view作为self.view一个子视图(您的主视图控制器)

[self.view addSubview:temporaryViewController.view]; 
相关问题