虽然iOS 7已经是古董级别的系统了,很多公司要求都从iOS 8开始支持,甚至连Apple最新发布的Xcode 8都已经不支持运行iOS 7的手机真机调试。但还是有些令人蛋疼菊紧的公司非要支持iOS 7甚至iOS 6以下。
今天在工作中就发现了这样一个偶发性Bug,频率还挺高。其实这个Bug以前也碰到过,但是以前没有注意,只是解决了这个问题。。问题是这样的,在iOS 8- (iOS 8以下)的系统中,发现这样一个问题,rootViewController是一个带导航栏的tabBarController,并且其中有一个A childViewController,我们从A childViewController push到B viewController,再从B viewController push到C viewController,也许因为某种原因,我们push进去之后,需要马上pop出来,那么问题就来了,见如下图:
从图上可以看到,当我点击『开始挑战』的时候,push进了C viewController,按意愿,应该是立即从C viewController返回到B viewController,但是结果却是并没有返回,而是留在这个空白的页面,我点击后退的时候,却回到了tabBarViewController,其实这个问题,我到现在也不明白是怎么回事,也许是因为pop过快的原因吧,其实解决方法也很简单,
给popViewController加一个延迟,可以使用dispatch_after,设置一个延时。。
解决问题的图如下所示: