背景故事
- 工作中遇到一种应用场景。 在只能拿到tabBarController的情况下,需要在app内任何页面 跳转至新页面。
为什么会遇到问题
- 因为没办法获取到当前视图的UINavigationController,首先确定用的跳转方法是
(void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^ __nullable)(void))completion NS_AVAILABLE_IOS(5_0);
- 遇到的问题:如果当前的页面是present过来的,就无法用tabBarController present至新页面,在不知道UIViewController有一个presentedViewController属性的前提。想通过[UIApplication sharedApplication].keyWindow.rootViewController 拿,发现present不会改变rootViewController。这就纳闷了,自然去想着弄清present过去的viewcontroller 在视图层级中是如何存在。