1

我试图在第二个 VC 出现之前加载位于第二个 VC 上的 UIWebView,以减少加载时间延迟。

我尝试了许多不同的方法,但运气不佳。如果我直接从第二个 VC 加载它,我可以加载并显示 webview,但存在加载滞后。所以,目前我正在尝试在第一个 VC 中使用 -prepareForSegue 方法预加载 webview。加载发生时没有任何错误,并且 segue 按预期发生,但 web 视图为空白。

第二个 VC 上的 webview 称为 QRWebView。

这是第一个VC的代码:

- (IBAction)btnQRWebView:(id)sender {

    [self performSegueWithIdentifier: @"segQRWebView" sender: self];
}



- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"segQRWebView"])
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"Terminologyapp" ofType:@"pdf"];
    NSURL *url = [NSURL fileURLWithPath:path];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    QRWebViewController *qrview =segue.destinationViewController;
    [qrview.QRWebView loadRequest:request];

    }
}

来自第二个 VC 的代码只是在 viewDidLoad 方法中将 QRWebView.delegate 设置为 self。有什么建议吗?

我尝试使用委托协议来完成这项工作,但不确定如何将 QRWebView 设置为委托。

4

3 回答 3

1

UIWebViewUIWindow除非附加到实例,否则不会呈现其内容。但是,它所附加到的窗口不需要可见。您可以尝试将您的 webview 附加到一个窗口中,viewDidLoad这样它不仅可以开始加载其 URL,而且可以开始呈现内容。然后,在 viewWillAppear 中,您可以将其重新附加到视图控制器视图中的位置。

也就是说,您的应用程序执行 segue 然后显示视图控制器所需的时间非常短,以至于这种优化可能不会改善您的情况。

于 2013-07-10T00:15:45.803 回答
0

尝试创建 webview 并在初始 viewController 中加载请求。然后将该 webView 传递给您的 qrview。

UIWebView *webview = [UIWebView alloc] init]; // or initWithFrame or whatever
[webView loadRequest:request];
qrview.QRWebView = webView;

这可能不完全正确,但这是基本思想。

于 2013-07-08T00:21:02.310 回答
0

因为 QRWebView 是链接到 2nd VC 中的 UIWebView 对象的 IBOutlet,所以在加载 2nd VC 的视图之前不会加载 QRWebView。您可以在 prepare 方法中手动加载视图。

QRWebViewController *qrview =segue.destinationViewController;
qrview.view;  // load the view
[qrview.QRWebView loadRequest:request];
于 2013-07-10T02:03:18.213 回答