Frage

Ich habe eine UITabBarController und einer der Leistenelemente ist eine Navigation Controller mit einigen Tasten auf sie. Eine der Tasten öffnet sich ein urlRequest und es in einem UIWebView geladen werden.

NSURL * url = [NSURL URLWithString:myUrl];
NSURLRequest * urlRequest = [NSURLRequest requestWithURL:url];
UIWebView * web = [tView wView];
[web setScalesPageToFit:YES];
[web loadHTMLString:@"Loading" baseURL:nil];
[web loadRequest:urlRequest];
[self.navigationController pushViewController:tView animated:YES];

Aus irgendeinem Grund, wenn ich auf die Schaltfläche zum ersten Mal passiert nichts.

habe ich das UIWebViewDelegate Protokoll zu debuggen es etwa so:

- (void)webViewDidStartLoad:(UIWebView *)webView
{
    NSLog(@"webViewDidStartLoad");

}

Wenn ich die Taste nichts klicken passiert, und ich sehe nicht die NSLog Nachricht. Wenn ich wieder auf die Schaltfläche schlug zurück und klicken Sie auf, ich sehe die Debug und alles funktioniert nur finden.

Jede Idee, was dies verursacht?

P. S, wenn ich das sagen: [self.navigationController pushViewController:tView animated:YES];

in der webViewDidStarLoad Methode nur die Anwendung hängen, da es nicht ist es auf dem ersten Klick geladen werden.

War es hilfreich?

Lösung

Sie müssen sicherstellen, dass TView Ansicht geladen ist. Wenn ein Viewcontroller instanziert wird, seine Sicht (und alle seine IBOutlets) sind alle gleich Null, und bleibt auf diese Weise, bis die Ansicht geladen wird.

Sie haben zwei Möglichkeiten: Bewegen Sie die Last Sachen in TView der -viewDidLoad Methode oder zwingen, um die Ansicht zu laden vor dem Aufruf [TView wview] durch, zum Beispiel, Aufruf [TView Ansicht] (dies wird die XIB-Datei erzwingt geladen werden und alle Ausgänge angeschlossen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top