所以我有一个奇怪的方法在我正在制作的浏览器应用程序中的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.
}
答案 0 :(得分:0)
-loadRequest方法是异步的,这意味着它会在主线程的执行继续时在另一个线程中启动加载。
因此,第一次调用时,它显示一个空白屏幕(因为第一个请求仍在另一个线程中运行)。第二次,因为第一个请求现在已经完成,它显示(而第二个请求在另一个线程中运行)。等等。
要在加载后立即使用URL内容刷新屏幕,您需要实现UIWebViewDelegate的-webViewDidFinishLoad方法。在该方法中,您知道URL已完成加载,因此如果您刷新Web视图,则应显示内容。