最近在一个项目中遇到一种情况,push到一个界面,如果那个界面未请求到数据,则直接pop回去,然而使用 [self.navigationController popViewControllerAnimated:YES];在iOS6、8、9都没有问题,但是在iOS7中发生不能pop出去的情况,其实该pop出来的页面其实已经从navigation stack中pop出去了,但是UI的动画却没有及时结束,然后你又从已经不在navigation stack中的view,继续动画,然后你就会发现卡在那里了,再点击继而程序崩溃!
那么你会想了,我把动画关掉 [self.navigationController popViewControllerAnimated:NO]; 然后。。。然并卵~
既然崩溃的原因是view已经pop出去了,才进行UI的animate,那么我们何不做个延迟,等view的pop动作结束,然后再进行UI的动画呢?
//延时执行动画
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.navigationController popViewControllerAnimated:YES];
});
这样就可以适配iOS7了!!!!!