2009-11-19 20 views
3

J'ai un UITabBarController et un des éléments de la barre est un contrôleur de navigation avec quelques boutons dessus. L'un des boutons ouvre un message urlRequest et le charge dans un UIWebView.UIWebView ne charge pas une page

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]; 

Pour une raison quelconque, lorsque je clique sur le bouton pour la première fois rien ne se passe.

J'utilise le protocole UIWebViewDelegate pour déboguer comme ceci:

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

} 

Lorsque je clique sur le bouton rien ne se passe, et je ne vois pas le message NSLog. Lorsque je clique de nouveau sur le bouton, je vois le débogage et tout fonctionne.

Une idée de ce qui cause cela?

P.S si je mets le: [self.navigationController pushViewController:tView animated:YES];

dans la méthode webViewDidStarLoad l'application juste accrocher, car il est pas charger le premier clic.

+0

ce premier extrait de code était très utile, merci. – samvermette

Répondre

2

Vous devez vous assurer que la vue de tView a été chargée. Lorsqu'un viewController est instancié, sa vue (et tous ses IBOutlets) sont toutes nulles, et restent ainsi jusqu'à ce que la vue soit chargée.

Vous avez deux options: déplacez votre chargement dans la méthode -viewDidLoad de tView, ou forcez la vue à charger avant d'appeler [tView wView], par exemple, en appelant [vue tView] (cela forcera le fichier XIB à être chargé, et tous les points de vente à se connecter