iOS:通过AppDelegate访问firstviewcontroller

iOS:通过AppDelegate访问firstviewcontroller,ios,appdelegate,Ios,Appdelegate,我想通过AppDelegate类访问我的第一个Viewcontroller的IBOutlet。我的项目基于故事板,没有第一个Viewcontroller的参考。 做这件事的理由是什么? 我知道我应该在第一个Viewcontroller中将此IBOutlet设置为属性,但在AppDelegate中?我怎样才能访问它? 谢谢您可以通过以下方式从应用程序的代理访问您的rootViewController: self.window.rootViewController 例如: - (BOOL)appl

我想通过AppDelegate类访问我的第一个Viewcontroller的IBOutlet。我的项目基于故事板,没有第一个Viewcontroller的参考。 做这件事的理由是什么? 我知道我应该在第一个Viewcontroller中将此IBOutlet设置为属性,但在AppDelegate中?我怎样才能访问它?
谢谢

您可以通过以下方式从应用程序的代理访问您的
rootViewController

self.window.rootViewController
例如:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    MyVCClass *firstVC = (MyVCClass*)self.window.rootViewController;
    [firstVC someMethod];

}

小心,您的ViewController可能尚未加载/启动。

因为您没有为应用程序的UIWindow设置rootViewController,然后执行
[[UIApplication sharedApplication].keyWindow rootViewController]
将为您提供零

如果您使用故事板进行导航,那么只需执行此操作即可获得rootViewController

UIViewController *vc = [self.navigationController.viewControllers objectAtIndex:0];

首先在AppDelegate.m中导入ViewController,如下所示:

#import "YourViewController"
然后在AppDelegate.m中放置以下代码

 @implementation AppDelegate

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:   (NSDictionary *)launchOptions
 {

   YourViewController * view = [[YourViewController alloc]init];
    self.window.rootViewController = view;
 }

你为什么要这么做?也许你的应用程序架构/设计不好。你是否将此viewController设置为应用程序窗口的rootViewController?那么,如何称呼我的FirstViewController?@nazz_areno我添加了一个example@rdurand,rootViewCotnroller在故事板中可能为零