2012-04-13 8 views
2

조건부로 뷰 컨트롤러를 App Delegate에서로드 할 수 있습니까?iOS : 조건부로 뷰 컨트롤러로드

예를 들어,이 작업을 수행 할 수 있습니까?

if (hasUserSignedUp) { 
     nav = [[navController alloc] initWithNibName:nil bundle:nil]; 
     [window addSubview:nav.view]; 
     [window makeKeyAndVisible]; 
    } 
    else { 
     su = [[SignUpViewController alloc] initWithNibName:nil bundle:nil]; 
     [window addSubview:su.view]; 
     [window makeKeyAndVisible]; 
    } 
+1

나는 투표를해야한다고 생각하지 않는다. 자연히 기술적 인 질문이기는하지만'applicationDidFinishLaunching :'메소드가 담당하는 것의 핵심을 잘라내는 철학적 질문이기도합니다. –

+0

나는 그것을 시도했다. 그렇지 않으면 질문을 게시 할 필요가 없습니다. 당신이 말하기에 유용한 것을 가지고 있지 않다면, 그다음에 모두 말해라. 보통의 예절 마저. – rosst400

+2

나는 이것에 대해 @ edc1591에 동의 할 것이다. "이 컴파일하고 실행할 것" 우리는 무언가의 질문을 생각할 수 없습니다. – mydogisbox

답변

1

예, 매우 편리합니다. 제한 사항이 없습니다.

하지만 뷰를 추가하는 대신 rootViewController를 설정하는 것이 좋습니다.

self.window.rootViewController = nav;//or su; 
1

이 더 나은 아이디어가 그들이 가입 한 경우에 따라, 두 경우 모두 탐색 컨트롤러를로드하는 것입니다 아마도 무엇을, 확실히 가능하지만, 다른 루트 뷰 컨트롤러를 사용합니다.

if (hasUserSignedUp) { 
    nav = [[UINavigationController alloc] initWithRootViewController:rootViewController]; 
} 
else { 
    su = [[SignUpViewController alloc] initWithNibName:nil bundle:nil]; 
    nav = [[UINavigationController alloc] initWithRootViewController:su]; 
} 

[window addSubview:nav.view]; 
[window makeKeyAndVisible]; 

app delete는 뷰 계층 구조의 루트를 만들어야하며 거기에서보기에 적절하게 조작 할 수 있습니다. 내가 당신이라면

, 나는 위의 코드를 사용하고, 그들은 로그인 또는 가입 한 후, 일반 루트 뷰 컨트롤러를 밀어하고 수정할 것이다 탐색 스택 스택 :

[self.navigationController pushViewController:rootViewController animated:YES]; 

double delayInSeconds = 0.5f; 
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
    self.navigationController.viewControllers = [NSArray arrayWithObject:self.navigationController.viewControllers.lastObject]; 
}); 

이 ISN ' 이 작업을 수행하는 가장 깨끗한 방법 (dispatch_after)이지만 어떻게 완료되었는지 확인할 수 있습니다. rootViewController에 hidesBackButtonYES으로 설정되어 있는지 확인하십시오.

0

설정 rootViewController 예, 확실히 그런 식으로 할 수있는 좋은 습관을