【问题标题】:iOS - Stop Modal UIViewController from getting presentediOS - 阻止模态 UIViewController 出现
【发布时间】:2013-05-03 10:18:18
【问题描述】:

我有一个模态UIViewController。 在收到内存不足警告时,我想关闭该模式。 为此,我编写了以下代码 -

- (void)didReceiveMemoryWarning
{
    [self dismissViewControllerAnimated:YES completion:nil];
    [super didReceiveMemoryWarning];
}

这在大多数情况下都可以正常工作。但是,当我初始化视图控制器,但还没有在屏幕上呈现它,并且当时出现内存警告时,代码执行继续,模态不会因为它还没有呈现而被关闭,当我的执行到达它被呈现的点,模态仍然出现。

如何处理这种情况并防止显示模式?如果有什么不清楚的地方请告诉我 - 我会尽力解释得更好。

【问题讨论】:

  • 您不想在收到内存不足警告后显示一次模态视图?

标签: ios objective-c uiviewcontroller low-memory


【解决方案1】:

你能根据下面的代码检查结果吗...

- (void)didReceiveMemoryWarning
{
    if(!self.myVC)
    {
     [self presentViewController:myVC animated:NO 
     completion:
               { [self dismissViewControllerAnimated:NO completion:nil];}];
    }
    else
     [self dismissViewControllerAnimated:YES completion:nil];
}

【讨论】:

    【解决方案2】:

    当您收到内存警告并且您的模态未显示时,您可以释放模态视图控制器并将其等同于 nil。您可以在呈现模态视图后设置一个布尔值,并在 didReceiveMemoryWarning 中使用它来关闭已经呈现的模态视图。

    -(void)didReceiveMemoryWarning
    {
        if(!_isModalPresnted)
        {
            [_modalViewController release]
            _modalViewController = nil;
        }
        else
        {
            [self dismissViewControllerAnimated:YES completion:nil];
        }
    }
    

    所以当你的执行达到它被呈现的地步时,你可以进行检查

    if(_modalViewController)
    {
          _isModalPresnted = YES;
         [self presentViewController:_modalViewController animated:YES completion:nil];
    
    }
    

    【讨论】:

      猜你喜欢
      • 2012-12-02
      • 1970-01-01
      • 2016-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 2012-10-26
      相关资源
      最近更新 更多