【问题标题】:How to prevent flickering when showing a view controller in another view controller在另一个视图控制器中显示视图控制器时如何防止闪烁
【发布时间】:2014-09-01 20:14:50
【问题描述】:

我只想在第一次显示主视图控制器时显示一次视图。

-(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 知道当前 过渡已完成'

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

【问题讨论】:

    标签: ios objective-c uiviewcontroller presentmodalviewcontroller


    【解决方案1】:

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

    [self.view addSubview:temporaryViewController.view];
    

    【讨论】:

      【解决方案2】:

      您在 viewWillAppear 中遇到错误,因为您不能在 iOS 中同时制作两个动画,这可能会导致您的应用崩溃,但大多数时候 iOS 对我们很好,它只是给我们一个警告。

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

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

      【讨论】:

      • 这是一个照片应用程序,我想在第一次加载时裁剪照片。
      • 裁剪视图控制器是第三方控制器,我不想更改它
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多