Ios 从另一个VC在第二个VC上加载UIWebView

Ios 从另一个VC在第二个VC上加载UIWebView,ios,objective-c,ios6,uiwebview,Ios,Objective C,Ios6,Uiwebview,我试图在显示第二个VC之前加载位于该VC上的UIWebView,以减少加载时间延迟 我尝试过很多不同的方法,但运气不太好。如果我直接从第二个VC加载webview,我可以让它加载并显示,但会有一个加载延迟。因此,目前我正在尝试在第一个VC中使用-prepareforsgue方法预加载webview。加载时没有任何错误,segue按预期进行,但webview为空 第二个VC上的webview称为QRWebView 以下是来自第一个VC的代码: - (IBAction)btnQRWebView:(i

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

我尝试过很多不同的方法,但运气不太好。如果我直接从第二个VC加载webview,我可以让它加载并显示,但会有一个加载延迟。因此,目前我正在尝试在第一个VC中使用-prepareforsgue方法预加载webview。加载时没有任何错误,segue按预期进行,但webview为空

第二个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设置为委托。

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

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

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

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

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

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

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


也就是说,你的应用程序执行segue然后显示视图控制器所需的时间非常小,因此此优化可能不会改善你的情况。

UIWebView
不会呈现其内容,除非它连接到
UIWindow
实例。但是,它所附着的窗口不需要可见。您可以尝试将webview附加到
viewDidLoad
中的窗口,这样它不仅可以开始加载URL,还可以开始呈现内容。然后,在ViewWillDisplay中,可以将其重新附着到视图控制器视图中的位置


也就是说,您的应用程序执行该过程然后显示视图控制器所需的时间非常小,因此此优化可能不会改善您的情况。

因为QRWebView是链接到第二个VC中UIWebView对象的IBOutlet,所以在加载第二个VC的视图之前,不会加载QRWebView。可以在“准备”方法中手动加载视图

QRWebViewController *qrview =segue.destinationViewController;
qrview.view;  // load the view
[qrview.QRWebView loadRequest:request];

因为QRWebView是链接到第二个VC中UIWebView对象的IBOutlet,所以在加载第二个VC的视图之前,不会加载QRWebView。可以在“准备”方法中手动加载视图

QRWebViewController *qrview =segue.destinationViewController;
qrview.view;  // load the view
[qrview.QRWebView loadRequest:request];

是的,谢谢,我确实试过了,赛格结束后我得到了一个空白的网络视图。我将您的建议放在第一个VC的ViewDidLoad中(最后一行除外,它保留在PrepareForSegue方法中)。这就像第一个VC不识别第二个VC上的UIWebView设置。QRWebView是实例还是类?QRWebView是链接到第二个VC中UIWebView对象的IBOutlet。AMayes..谢谢,我尝试过了,之后得到了一个空白的webview。我将您的建议放在第一个VC的ViewDidLoad中(最后一行除外,它保留在PrepareForSegue方法中)。就像第一个VC不识别第二个VC上的UIWebView设置一样。QRWebView是实例还是类?QRWebView是链接到第二个VC中UIWebView对象的IBOutlet。Andraw…谢谢,但我肯定遗漏了什么。行qrview.view;给出警告(未使用属性访问结果)。我不确定我应该有额外的代码。和原始的…谢谢,但我一定错过了一些东西。行qrview.view;给出警告(未使用属性访问结果)。我不确定我是否应该有额外的代码。我的lag真正的问题只出现在iPad3上……因为我的segue使用的是部分卷曲。“卷曲”在UIWebView加载期间挂起一秒钟。使动画跳跃。我正试图避免这种情况。在iPhone5上一切都很好。这很可能是因为更快的处理器。我真正的滞后问题只出现在iPad3上…因为我的segue使用的是部分卷曲。“卷曲”在UIWebView加载期间挂起一秒钟。使动画跳跃。我正试图避免这种情况。iPhone5上的一切都很好,这很可能是因为它的处理器速度更快。