2012-11-16 50 views
0

我正在使用navigationController正確推送viewController B.不過,我想這樣做uiwebviewviewController B完成它的負載,而不是立即。我首先嚐試初始化B並在加載結束時按下A,但沒有成功,控制器未被查看。如何做呢?謝謝。uiwebview完成加載後的pushviewcontroller

從controllerA,

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)webViewDidFinishLoad:(UIWebView*)theWebView 
{ 
    AViewController *theInstance = [[AViewController alloc] init]; 
    [theInstance pushBcontroller]; } 

AViewController

-(void)pushBcontroller{ 

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

} 

不工作...

+0

AVController是否嵌入在導航控制器中?檢查pushBcontroller方法中的[self navigationController]是否不爲零 – rdelmar

+0

同時檢查並確保Web視圖已將其代理正確設置爲nib中的「BViewController」,否則將不會調用「webViewDidFinishLoad」。 – Xono

+0

@Xono,webviewDidFinishLoad被正確觸發,然後調用pushBcontroller函數。然後,沒有任何反應。 – Jaume

回答

0

AViewController *theInstance = [[AViewController alloc] init];創建AViewController實例。由於它是新的它不是視圖控制器層次結構的一部分,因此沒有連接到導航控制器。

給你的BViewController引用前一個控制器,並使用它來代替創建一個不同的控制器。或者,也許更好的是,在加載完成後發送通知,原始AViewController用於知道何時更改顯示。

+0

我給了一個BViewController的引用,現在navigationController被正確設置的時候應該pushB。謝謝。然而,什麼也沒有發生,B不會被推... – Jaume