2014-02-26 86 views
0

我想通過AppDelegate類訪問我的第一個ViewController的IBOutlet。我的項目基於故事板,並且沒有第一個Viewcontroller的參考。 這是做什麼的? 我知道我應該將此IBOutlet設置爲第一個ViewController中的屬性,但在AppDelegate中?我如何訪問它? 感謝iOS:通過AppDelegate訪問firstviewcontroller

+1

爲什麼你需要這樣做?也許你的應用程序架構/設計不好。 – Larme

+0

你是否將此viewController設置爲應用程序窗口的rootViewController? –

回答

0

您可以rootViewController從您的應用程序的委託與訪問:

self.window.rootViewController 

例子:

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

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

} 

小心,你的ViewController可能沒有被加載/啓動。

+0

那麼,如何調用我的FirstViewController? – CrazyDev

+0

@nazz_areno我添加了一個示例 – rdurand

+0

非常感謝... – CrazyDev

0

因爲你沒有爲你的應用的UIWindow設置rootViewController,那麼做
[[UIApplication sharedApplication].keyWindow rootViewController]會給你零。

如果你用故事板爲您導航然後只需你可以做到這一點,以獲得RootViewController的

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

首先導入您的ViewController在AppDelegate.m這樣的:

#import "YourViewController" 

然後在AppDelegate中.m放置以下代碼

@implementation AppDelegate 

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

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