2012-11-16 3 views
0

을 사용하여 A에서 viewController B를 올바르게 푸시합니다. 그러나, 나는 한번 uiwebviewviewController B에서 부하를 완료하고 즉시 완료하고 싶습니다. 로드 B가 끝나면 성공하지만 컨트롤러가 보이지 않을 때 init B를 먼저 시도하고 A를 시도했습니다. 어떻게 할 수 있습니까? 고맙습니다. controllerA에서 uiwebview가로드를 완료 한 후 pushviewcontroller

,
self.controllerB = [[BViewController alloc] initWithNibName:@"BViewController" bundle:nil anUser:self.idUser aLang:self.lang]; 

//[[self navigationController] pushViewController:controllerB animated:NO]; working if pushed directly here 

[self.controllerB view]; 

후, controllerB 초기화

, viewDidLoad 트리거 webviewDidFinishLoad하고, B는 이제 푸쉬 정면에서 볼되어야한다.

-(void)pushBcontroller{ 

    [[self navigationController] pushViewController:self.controllerB animated:NO]; 

} 

가 작동하지 AViewController
- (void)webViewDidFinishLoad:(UIWebView*)theWebView 
{ 
    AViewController *theInstance = [[AViewController alloc] init]; 
    [theInstance pushBcontroller]; } 

, ...

+0

내비게이션 컨트롤러에 AV 컨트롤러가 내장되어 있습니까? pushBcontroller 메소드의 [self navigationController]가 nil이 아님을 확인하십시오. – rdelmar

+0

또한 웹보기의 담당자가 네임드의 'BViewController'로 올바르게 설정되었는지 확인하십시오. 그렇지 않으면'webViewDidFinishLoad'가 절대 호출되지 않습니다. – Xono

+0

@ Xono, webviewDidFinishLoad가 제대로 트리거 된 다음 pushBcontroller 함수가 호출됩니다. 그런 다음 아무 일도 일어나지 않습니다. – Jaume

답변

0

라인 AViewController *theInstance = [[AViewController alloc] init];AViewController새로운 인스턴스를 만듭니다. 이므로 뷰 컨트롤러 계층 구조의 일부가 아니므로 탐색 컨트롤러에 연결되어 있지 않습니다.

BViewController에 이전 컨트롤러에 대한 참조를 제공하고 다른 컨트롤러를 만드는 대신 사용하십시오. 또는 원래의 AViewController이 표시를 변경하는시기를 알기 위해로드가 완료되면 알림을 보내야합니다.

+0

BViewController에 대한 A 참조를 주었고 이제는 navigationB가 pushB를해야 할 때 올바르게 설정되었습니다. 감사. 그러나 아무 일도 일어나지 않습니다. B가 밀려 나지 않았습니다 ... – Jaume

관련 문제