2011-03-31 51 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

相关问题