我有一个带有一些项目的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方法。
有关为何以及如何解决此问题的任何想法?谢谢!
答案 0 :(得分:2)
在viewController创建UIWebView之前,你正在使用refreshUrl 使用断点并检查webview的值。我认为这是第一次没有。
只需将[browserViewController refreshUrl:urlAddress];
移动到推送后的行。