2014-03-26 20 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

相關問題