如何防止viewControllers的冲突?

时间:2016-07-25 13:12:00

标签: ios uinavigationcontroller collision

我有非常常用的导航控制器,我可以处理本地通知。当本地通知被触发时,新的viewController正在创建和显示。所以这是非常常见的情况,当我按标准行为推送和弹出(后退按钮)控制器时,突然在推送或弹出过程中,本地通知正在激活,新的viewControllers正在尝试出现并且都失败。结果 - 黑屏,没有响应的应用程序。如何检测和防止这种碰撞?或者我应该使用其他方法?

1 个答案:

答案 0 :(得分:0)

首先,一些答案是here。但他们不适合我。所以我最终只使用阻止UI 1秒钟。它并不重要,但按预期工作。如果正在进行推(弹出)动画,则在1秒后将完成:

[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        if ([lastStackVC.navigationController respondsToSelector:@selector(showViewController:sender:)]) {
            [lastStackVC.navigationController showViewController:vc sender:nil];
        } else {
            [lastStackVC.navigationController pushViewController:vc animated:YES];
        }
        [[UIApplication sharedApplication] endIgnoringInteractionEvents];
    });