2011-09-22 2 views
0

UIViewController가 시작되면 다른 UIViewController를 즉시 시작하고 싶습니다. 이 작동하지 않습니다즉시 viewcontroller에서 새 UIViewController 시작

-(void) awakeFromNib { 
    UIViewController *newcontroller = [[[UIViewController alloc] init] autorelease]; 
    ... 
    [self presentModalViewController:newcontroller animated:YES]; 
} 

을 위해이 작동하는, 내가 지금처럼하는 방법에 대한 afterDelay을 할 필요가 :

-(void) awakeFromNib { 
    [self performSelector:@selector(startNewController) withObject:nil afterDelay:0.5]; 
    [super init]; 
} 
-(void) startNewController { 
    UIViewController *newcontroller = [[[UIViewController alloc] init] autorelease]; 
    ... 
} 

이 가능은 지체없이 일하러 가야 ?

답변

0

viewDidAppear 메서드에서 startNewController을 호출하십시오. 그럴 경우, 사용자가 viewController를 표시하려고 할 때 viewController가 완전히로드되지 않았기 때문에 발생합니다. 그래서 기다릴 때 작동합니다.

+0

아니, 작동하지 않습니다. afterDelay 만 viewDidLoad와 함께 작동합니다. – blinsky

+0

은 viewDidLoad에서 작동하지 않습니다. – samfisher

+0

맞아, 조금 혼란스러워, 내 대답을 바로 잡았어.) – ender

0

실제로 구현을 강요하는 응용 프로그램 아키텍처를 계획하면 안됩니다. 비록, 내가

내가 말하고 싶지만 ... 당신이 밖으로 방법이 없습니다 거기에 시간 이해할 수 : 귀하의 경우에 대한 가장 좋은 방법은

에서 컨트롤러를 호출

viewDidAppear

입니다 또는

viewWillAppear

+0

이러한 구현의 필요성을 설명하려고합니다. 루트 컨트롤러는 "다운로드"등의 로더 역할을합니다. 그래픽이있는 다른 컨트롤러가로드되어 기능 메뉴를 수행하는 동안 표시됩니다. 메뉴 항목을 선택할 때 현재 컨트롤러를 언로드하고 루트 컨트롤러를 통해 새 컨트롤러를 실행합니다. 희망은 분명히 설명했다. – blinsky

+0

* err "로드 중"등 죄송합니다. – blinsky

관련 문제