2014-02-26 2 views
0

첫 번째 Viewcontroller의 IBOutlet에 AppDelegate 클래스로 액세스하려고합니다. 내 프로젝트는 스토리 보드을 기반으로하며 첫 번째 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]을 사용하면 nil이 표시됩니다.

당신이 rootViewController 같은 AppDelegate.m에서의 ViewController를 가져

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

먼저 얻기 위해 단순히 당신이 할 수있는 다음 탐색을위한 스토리 보드를 사용하는 경우 : 다음

#import "YourViewController" 

AppDelegate에에에게 .m 아래 코드를 넣으십시오.

@implementation AppDelegate 

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

    YourViewController * view = [[YourViewController alloc]init]; 
    self.window.rootViewController = view; 
} 
관련 문제