【发布时间】:2011-03-02 19:19:57
【问题描述】:
我有一个带有一些项目的 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 方法也不是第一次被调用。
关于为什么以及如何解决它的任何想法?谢谢!
【问题讨论】: