【问题标题】:UIWebview is off loading urlUIWebview 正在关闭加载 url
【发布时间】:2012-11-03 17:31:25
【问题描述】:

所以我有一种奇怪的方法来在我正在制作的浏览器应用程序的 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.
}

【问题讨论】:

    标签: xcode uitableview uiwebview nsstring


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,我该怎么做?
    • 您好,我尝试了您的提示,但我需要一种仅重新加载页面一次的方法。
    • 您需要分配一个对象作为您的 UIWebView 对象的委托。此委托对象需要由您的应用程序或其他非视图对象保留,因此不会被垃圾回收。它需要声明为符合 UIWebViewDelegate 协议。您需要实现的唯一方法是 -webViewDidFinishLoad: 方法,它将作为参数传递一个指向您的 webView 对象的指针。在该方法中,您应该只需要调用:[webView setNeedsDisplay]; 来提醒系统 webView 需要重绘。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 2014-10-22
    • 2010-10-21
    • 1970-01-01
    • 2011-08-04
    • 2011-09-12
    • 1970-01-01
    相关资源
    最近更新 更多