在我们的应用程序中,有许多地方需要快速弹出视图控制器而不带动画,然后再以动画形式推入新的视图控制器。我们会做类似这样的事情:
在iOS8之前,这个代码可以正常工作并且动画效果会显示新的视图控制器从当前的视图控制器滑入,因为导航控制器首先没有动画地弹出。
现在在iOS8中,情况似乎已经改变了,顶部的视图控制器被弹出,底层的视图控制器闪烁了一下,然后新的视图控制器被推入。我从头开始创建了一个iOS8的Xcode项目并尝试了测试。请参见此GIF以查看演示。每次我们在分割视图的主侧面上点击其中一个按钮时,我们在分割视图的详细(右)侧面执行以上两行代码。请注意,在推入新视图控制器之前,灰色视图(导航控制器的根视图)会闪烁一瞬间。
我尝试搜索任何可能导致iOS8更改的原因,但似乎找不到任何相关文档。有人对可能导致这种更改的原因有任何想法吗?任何意见都将不胜感激!
另外,我尝试着修改代码,并发现使用以下代码:
[navController popViewControllerAnimated:NO];
[navController pushViewController:newVC animated:YES];
在iOS8之前,这个代码可以正常工作并且动画效果会显示新的视图控制器从当前的视图控制器滑入,因为导航控制器首先没有动画地弹出。
现在在iOS8中,情况似乎已经改变了,顶部的视图控制器被弹出,底层的视图控制器闪烁了一下,然后新的视图控制器被推入。我从头开始创建了一个iOS8的Xcode项目并尝试了测试。请参见此GIF以查看演示。每次我们在分割视图的主侧面上点击其中一个按钮时,我们在分割视图的详细(右)侧面执行以上两行代码。请注意,在推入新视图控制器之前,灰色视图(导航控制器的根视图)会闪烁一瞬间。
我尝试搜索任何可能导致iOS8更改的原因,但似乎找不到任何相关文档。有人对可能导致这种更改的原因有任何想法吗?任何意见都将不胜感激!
另外,我尝试着修改代码,并发现使用以下代码:
NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:navController.viewControllers];
[viewControllers removeLastObject];
[viewControllers addObject:newVC];
[navController setViewControllers:viewControllers animated:YES];
看起来问题已经解决了。然而,如果可能的话,我更希望不使用这种方法,因为我们的应用程序中有许多地方都使用了这个2行的弹出-推送组合,我更希望不必到处更改。
谢谢!