iPhone - UIWebView无法加载第一个请求

时间:2011-03-02 19:19:58

标签: iphone xcode uiwebview

我有一个带有一些项目的TableViewController,按下时每个项目都会推送一个带有UIWebView的ViewController,ViewController在所有情况下都是相同的,但是每个项目都要求webView加载不同的URL。现在的问题是,我第一次选择一个项目时,webView没有加载URL,但如果我回到我的导航控制器然后再次按下任何一个项目(即使是第一次相同),它正确加载。为什么会这样?

这是我的代码。在我的TableViewController中,我在didSelectRowAtIndexPath中有这个:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {     
 NSString *urlAddress;
 NSInteger row = [indexPath row];

 // SELECT THE URL BASED ON THE SELECTED ROW. SECTION OMMITED FOR CLARITY PURPOSES.
    urlAddress = @"http://www.google.com";

 [browserViewController refreshUrl:urlAddress];
 [urlAddress release];

 browserViewController.title = [NSString stringWithFormat:@"%@", [itemsArray objectAtIndex:row]];

 MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
 [delegate.mainNavController pushViewController:browserViewController animated:YES]; }

browserViewController在TableViewController的viewDidLoad方法中初始化。在BrowserViewController实现中,我有这个方法:

- (void) refreshUrl: (NSString *)theUrlAddress{
 NSURL *url = [NSURL URLWithString: theUrlAddress];
 NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
 [webView loadRequest:requestObj];}

但是这个方法似乎仅在第二次调用时起作用。如果我在它上面设置一个断点,我可以看到它在我第一次按下表上的项时实际被调用,但是loadRequest什么也没做。

BrowserViewController也是一个UIWebViewDelegate。第一次也没有调用webViewDidStartLoad和webViewDidFinishLoad方法。

有关为何以及如何解决此问题的任何想法?谢谢!

1 个答案:

答案 0 :(得分:2)

在viewController创建UIWebView之前,你正在使用refreshUrl 使用断点并检查webview的值。我认为这是第一次没有。

只需将[browserViewController refreshUrl:urlAddress];移动到推送后的行。