iOS - 停止模态UIViewController从呈现

时间:2013-05-03 10:18:19

标签: ios objective-c uiviewcontroller low-memory

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

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

在大多数情况下这很好用。但是,当我初始化视图控制器但尚未在屏幕上显示它,并且当时发生内存警告时,代码执行继续,模式不会因为尚未显示而被解雇,而当我的执行到达它呈现的点,模态仍然出现。

如何处理此方案并阻止显示模式?如果问题不明确,请告诉我 - 我会尽力解释一下。

2 个答案:

答案 0 :(得分:0)

可以根据以下代码检查结果......

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

答案 1 :(得分:0)

当您收到内存警告并且未显示模态时,您可以释放模态视图控制器并将其等同为nil。您可以在呈现模态视图后设置一个bool,并在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];

}