如何获取根视图控制器?

时间:2023-03-25
本文介绍了如何获取根视图控制器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我需要一个根视图控制器的实例.

I need an instance of root view controller.

我尝试了这些方法:

UIViewController *rootViewController = (UIViewController*)[[[UIApplication sharedApplication] keyWindow] rootViewController];

返回:null:

当我尝试获取控制器数组时:

Also when I try to get an array of controllers:

NSArray *viewControllers = self.navigationController.viewControllers;

它只返回一个控制器,但它不是我的根视图控制器.

It returns only one controller, but it isn't my root view controller.

如果我尝试从导航控制器中获取:

If I try to take from navigation controller:

UIViewController *root = (UIViewController*)[self.navigationController.viewControllers objectAtIndex:0];

返回:null:

任何想法为什么?我还能尝试获取根视图控制器的实例吗?

Any ideas why? What else could I try to get an instance of my root view controller?

谢谢.

推荐答案

如果您尝试访问您在 appDelegate 中设置的 rootViewController.试试这个:

if you are trying to access the rootViewController you set in your appDelegate. try this:

Objective-C

YourViewController *rootController = (YourViewController*)[[(YourAppDelegate*)
                                   [[UIApplication sharedApplication]delegate] window] rootViewController];

斯威夫特

let appDelegate  = UIApplication.sharedApplication().delegate as AppDelegate
let viewController = appDelegate.window!.rootViewController as YourViewController

斯威夫特 3

let appDelegate  = UIApplication.shared.delegate as! AppDelegate
let viewController = appDelegate.window!.rootViewController as! YourViewController

斯威夫特 4 &4.2

let viewController = UIApplication.shared.keyWindow!.rootViewController as! YourViewController

斯威夫特 5 &5.1 &5.2

let viewController = UIApplication.shared.windows.first!.rootViewController as! YourViewController

这篇关于如何获取根视图控制器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

上一篇:如何在 HTTP post 中向 PHP 服务器发送多个参数 下一篇:从 NSRange 创建 UITextRange

相关文章