0

所以我有一种奇怪的方法来在我正在制作的浏览器应用程序的 UIWebView 中加载书签。对于书签 UITableView 中的 didSelectRowAtIndexPath,我有以下代码:

NSUserDefaults *lString = [NSUserDefaults standardUserDefaults];
[lString setValue:[bookmarks objectAtIndex:indexPath.row] forKey:@"loString"];

然后我有一个将 UITableView 中选定对象的模式连接到另一个视图控制器,该控制器基于此代码加载 UIWebView。所以问题是我第一次点击表格视图对象时,UIWebview 是空白的,然后第二次显示我第一次点击的 URL。请帮忙!谢谢,迈克尔

- (void)viewDidLoad
{
[super viewDidLoad];
NSUserDefaults *lString = [NSUserDefaults standardUserDefaults];
loadString = [lString valueForKey:@"loString"];
NSURL *url = [[NSURL alloc] initWithString:loadString];
NSURLRequest *togo = [[NSURLRequest alloc] initWithURL:url];
[webView loadRequest: togo];

// Do any additional setup after loading the view.
}
4

1 回答 1

0

-loadRequest 方法是异步的,这意味着它在您的主线程继续执行时在另一个线程中开始加载。

所以第一次调用它时,它显示一个空白屏幕(因为第一个请求仍在另一个线程中运行)。第二次,因为第一个请求现在已经完成,它表明(而第二个请求在另一个线程中运行)。等等。

要在加载后立即使用 URL 内容刷新屏幕,您需要实现 UIWebViewDelegate 的 -webViewDidFinishLoad 方法。在该方法中,您知道 URL 已完成加载,因此如果您在那里刷新 Web 视图,它应该会显示内容。

于 2012-11-05T18:37:08.913 回答