我有同樣的問題,我發現一個乾淨的解決方案避免使用dispatch_async或dispatch_after。
簡單地說,正如異常所描述的那樣,當呈現轉換仍在進行中時,您試圖關閉視圖控制器。 這意味着,一旦
- presentViewController:animated:completion:
完成塊被調用,調用該辭退的轉變尚未完成。
從iOS的7起過渡的UIViewController有一個可用的新方法
- transitionCoordinator
的transitionCoordinator給你 機會盡快轉換完成後排隊完成塊。
該方法返回的對象符合UIViewControllerTransitionCoordinator協議。知道解決方案非常簡單。
的
- presentViewController:animated:completion:
過渡協調器的調用之後被適當地由框架構成。
使用
- animateAlongsideTransition:completion:
它發送正確完成塊。
這裏有點代碼段更好地解釋解決方案
void(^completion)() = ^() {
[modalViewController dismissViewControllerAnimated:YES completion:nil];
};
// This check is needed if you need to support iOS version older than 7.0
BOOL canUseTransitionCoordinator = [viewController respondsToSelector:@selector(transitionCoordinator)];
if (animated && canUseTransitionCoordinator)
{
[viewController presentViewController:modalViewController animated:animated completion:nil];
[viewController.transitionCoordinator animateAlongsideTransition:nil completion:^(id<UIViewControllerTransitionCoordinatorContext> context) {
completion();
}];
}
else
{
[viewController presentViewController:modalViewController animated:animated completion:completion];
}
什麼是你想上面的代碼來實現的? – 2014-09-10 12:26:53
我剛剛遇到了完全相同的錯誤.. – Jeef 2014-09-10 15:07:48
我的假設是強制一個視圖到一個單一的方向 - 這就是我在做什麼,我有同樣的錯誤 – Jeef 2014-09-10 15:16:25