在某些业务场景下,需要将一个 ViewController 从 NavigationController 里 pop 后,立即 push 进另一个 ViewController。在 iOS8 之前这不是什么问题,用以下代码即可轻松实现:
1 2
| [navigationController popViewControllerAnimated:NO]; [navigationController pushViewController:newViewController animated:YES];
|
但在 iOS8 上这样无法实现,pop 后不会 push 另一个 ViewController。可以用以下方法实现,思路是直接修改 navigationController 里栈的数据(暂时没有找到其他更好的方法):
1 2 3 4
| NSMutableArray *viewControllersInStack = [NSMutableArray arrayWithArray:navigationController.viewControllers]; [viewControllersInStack removeLastObject]; [viewControllersInStack addObject:newViewController]; [navController setViewControllers:viewControllersInStack animated:YES];
|