2011-03-31 27 views
0

我有一個TableViewController,當我選擇一個單元格時,它應該加載一個帶有WebView的ViewController。從另一個控制器更改UIWebView的內容

下面的代碼:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    PostViewController *postViewController = [[PostViewController alloc] initWithNibName:@"PostViewController" bundle:[NSBundle mainBundle]]; 
    [postViewController.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.fr"]]] 
    [self.navigationController pushViewController:postViewController animated:YES]; 

    [PostViewController release]; 

} 

的問題是,在視圖控制器被加載,但什麼也沒有發生在WebView中。 當我調試程序時,我可以看到WebView的地址是0x0,所以我猜測出錯了。 是否因爲我試圖在其父ViewController加載之前修改WebView的內容?

我想另一種正確的做法是將URL傳遞給ViewController,然後從viewWillAppear方法內部調用WebView上的loadRequest。 但我需要明白爲什麼它不能這樣工作。

+0

哪裏是你的Web視圖初始化? – jnic 2011-03-31 15:58:57

+0

恐怕它沒有初始化。但在這種情況下,似乎沒有必要,因爲我嘗試了BuildSucceeded的解決方案,並且它的工作原理沒有初始化。 WebView被聲明爲我的PostViewController的出口,並且它被鏈接到PostViewController.xib中的WebView控件。 – teum 2011-04-01 07:44:20

回答

2

0x0nil的地址,表示您的網絡視圖在此時尚未初始化。

如果你在PostViewControllerloadViewviewDidLoad方法創建Web視圖,然後調用初始化setNeedsLayout後,立即將迫使其創作:

PostViewController *postViewController = [[PostViewController alloc] init ... 
[postViewController.view setNeedsLayout]; 

否則,這些方法將不會被調用,直到你的看法被展示。

+0

一旦顯示,我無法與WebView交互? – teum 2011-04-01 07:46:40

+0

一旦顯示,您可以像往常一樣進行交互。既然你沒有詳細說明你的設置,我創建了一個測試項目,假設web視圖在'loadView'中的初始化,並確認它的行爲如預期。 – jnic 2011-04-01 09:07:46

+0

我在Peter Hosey的帖子(在你的問題下)給你提供了更多信息。我會嘗試你的解決方案,而不會忘記這次初始化:) 謝謝你的時間。 – teum 2011-04-02 20:54:33

4

試試這個

不是訪問你爲什麼不只是傳遞的URL值到ViewController和postViewController的viewDidLoad中加載網頁視圖中的WebView的。

在你的情況

PostViewController *postViewController = [[PostViewController alloc] initWithNibName:@"PostViewController" bundle:[NSBundle mainBundle]]; 
postViewController.urlString = @"http://www.google.fr"; 
[self.navigationController pushViewController:postViewController animated:YES]; 

[PostViewController release]; 

在你postViewController.h聲明與性能urlString並在viewDidLoad中的.m文件合成現在

//Alloc init your webview here 
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]]]; 
+0

是的,這就是我在我的文章最後一段討論的內容(作爲替代解決方案),它完美地工作。但我還需要理解爲什麼它不能以另一種方式工作(但我想jnic回答了這個問題的一部分)。無論如何,謝謝你的時間。 – teum 2011-04-01 07:29:44

相關問題