2014-03-26 19 views
1

当出现modalView时,网络事件会生成一个新的模态视图控制器。我在做什么是连锁presentViewController:动画dismissViewControllerAnimated内:是这样完成:当链dismissViewControllerAnimated时出错:完成和presentViewController:动画

// ModalViewController *vc = ... 
    if (self.presentedViewController) { 
     __weak MyViewController *me = self; 
     [self.presentedViewController dismissViewControllerAnimated:YES 
                 completion: 
     ^{ 
      // need a delay to call? 
      dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
       [me presentViewController:vc 
            animated:YES 
           completion:nil]; 
      }); 
     }]; 
    }else{   
     [self presentViewController:vc animated:YES completion:nil]; 
    } 

一切顺利:视图 - 控制辞退原来的模式,产生的网络一一呈现,并且用户可以成功地驳回。

2014-03-26 15:49:52.111 coshop[6046:60b] Warning: Attempt to dismiss from view controller <RootViewController: 0xa8b54a0> while a presentation or dismiss is in progress! 

我也试过这样:

if (self.presentedViewController) { 
    __weak MyViewController *me = self; 
    [self.presentedViewController dismissViewControllerAnimated:YES 
                completion:nil]; 

     // dismiss animation ends within 0.5. 
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
      [me presentViewController:vc 
           animated:YES 
          completion:nil]; 
     }); 

}else{   
    [self presentViewController:vc animated:YES completion:nil]; 
} 

任何建议然而,试图提出一个3 modalViewController时,失败,错误?谢谢!

+0

当前模态仍然不变时,您是否不想不动画?然后将当前模态降低?的确,为什么这么多的模式? – Wain

+0

你想达到什么目的?听起来像很多模态窗口 –

+0

是的,确实很多模态视图。第一个模式视图是用户生成的,第二个是生成的网络事件,第三个是用户再次生成的。这个问题似乎有些缺失,所以当第二个被解散时,系统并不这么认为 - 所以无法呈现第三个。 – wangii

回答

1

只是因为VC不再出现在模拟器或设备中,并不意味着它的动画还没有完全完成。

我怀疑你的“3rd modalViewController”没有出现在之后第二个网络生成的视图控制器被解雇了。它在第一种情况下起作用的原因是因为你在驳回的vc的解雇完成块中提交它。

如果第三个是由用户操作呈现的,则需要确保他们在其他vc的解雇或演示完成之前无法执行该操作。

您可能想要做的是将用户的操作设置为一个块,然后将其作为参数传递给提供下一个视图控制器的类,然后从演示文稿完成块执行该块。

+0

加了警卫isBeingPresent&isBeingDismissed解决了这个问题。谢谢! – wangii

相关问题