如何防止在另一个视图控制器中显示视图控制器时出现闪烁
问题描述:
我想仅在第一次显示主视图控制器时显示视图一次。如何防止在另一个视图控制器中显示视图控制器时出现闪烁
-(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知道当前 过渡已经完成了”
如何隐藏主控制器显示在临时视图控制器之前?
答
您在viewWillAppear中得到了错误,因为您无法在iOS中同时执行两个动画,它可能会让您的应用程序崩溃,但大部分时间iOS对我们很好,它只是给我们一个警告。
现在我主要关心的是,为什么要添加这个主视图控制器,如果你根本不想使用它?这不闪烁,这是一个正常的行为,如果你想UINavigationController出现,只需播种它而不是这个“主视图控制器”。
如果你有更多隐藏的逻辑会阻止你做我说的话,请告诉我。
答
添加temporaryViewController.view
作为self.view
一个子视图(您的主视图控制器)
[self.view addSubview:temporaryViewController.view];
这是一个照片应用程序,我想裁剪时加载第一次的照片。 – zontragon 2014-09-01 20:22:04
和作物视图控制器是第三方控制器,我不想改变它 – zontragon 2014-09-01 20:24:08