2016-05-04 7 views
1

Ich versuche, eine WKWebView über eine andere Ansicht mit der presentViewController Methode anzuzeigen, zeigt aber nur einen weißen Bildschirm.wkwebview zeigt nichts als einen weißen Bildschirm

Ich habe die WKWebView in meinem ViewController.m wie folgt umgesetzt:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init]; 
    _webView = [[WKWebView alloc] initWithFrame:self.view.frame 
           configuration:configuration]; 
    _webView.navigationDelegate = self; 
    [_webView loadRequest:[NSURLRequest requestWithURL:url]]; 
    [self.view addSubview:_webView]; 
} 

dann in einer anderen Klasse habe ich eine Methode mit dem folgenden Code:

AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
ViewController *webView1 =[[ViewController alloc] init]; 

[delegate.window.rootViewController presentViewController: webView1 
               animated:YES completion:nil]; 

Dieser letzte Code "präsentiert" eine weiße Bildschirm auf meiner rootViewController. Ich habe keine Ahnung, warum mein WebView ein weißer Bildschirm ist.

+2

Vielleicht möchten Sie Ihre URL überprüfen, um sicherzustellen, dass die Anforderung gültig ist. Stellen Sie außerdem sicher, dass Sie HTTPS in der URL verwenden oder dass Sie die entsprechenden Werte für ATS in der PLIST-Datei deaktiviert/festgelegt haben. ATS ist standardmäßig aktiviert. Wenn Sie das HTTPS-Protokoll nicht verwenden, wird die Anfrage blockiert. –

+0

@ dkw5877 Ich überprüfe doppelt. Ich benutze HTTPS in meinem Link: 'NSURL * url = [NSURL URLWithString: @ "https://github.com"];' –

+0

Sie die '' presentViewController Methode in 'viewDidLoad' nennend? Wenn ja, versuchen Sie dies [link] (http://stackoverflow.com/questions/11862883/whose-view-is-not-in-the-window-hierarchy) und sehen, ob das hilft. –

Antwort

0

So fand ich, warum es nur einen weißen Bildschirm zeigte. Es stellt sich heraus, dass Sie die WKWebView mit einem UINavigationController wickeln müssen.

Durch Zugabe:

UINavigationController *controller = [[UINavigationController alloc] initWithRootViewController: _webView]; 

meine benutzerdefinierten Methode in meiner benutzerdefinierten Klasse und dann die controller präsentiert ich gerade erstellt statt der _webView:

[delegate.window.rootViewController presentViewController: controller animated:YES completion:nil]; 

funktioniert jetzt.