有时候 我们在一个View中加了一个按钮想要点击并推出一个新界面,这时候 我们要拿到当前控制器或导航,否则无法present或push。

这时我们就要想一下我们的view将被放到哪个控制器下。而控制器的结构是怎么样的。

假设我们用当前最流行的框架,一个tabBarController带几个NavigationController,而每个NavigationController又带着其他页面。

目前QQ,微信,百度贴吧,等较大型的应用都是这样的框架。

而我们要push页面的话就可以用以下的代码。先拿到根控制器。而我们想要的导航控制器则是根控制器的子控制器并且它当前是被选中的。

UITabBarController * tabBarVc = (UITabBarController *)self.window.rootViewController;

        UINavigationController * navi = tabBarVc.selectedViewController;

 

而如果我们应用不大,根控制器就是导航控制器则用如下代码即可。

UINavigationController * Navi = (UINavigationController *)self.window.rootViewController;