2009-04-18 5 views
0

J'ai une application basée sur la navigation. Une fois qu'une rangée est cliquée dans une vue de table, je pousse une UIWebView. L'UIWebView contient des liens Web. L'utilisateur clique sur un lien, ce qui rend la page Web externe. Tout cela se passe dans mon application. La barre de navigation supérieure n'a pas changé avec le clic d'un lien qui rend et la page Web externe. Cependant, une fois que l'utilisateur clique sur le bouton de navigation en haut à gauche, il retourne à la vue de table plutôt qu'à l'UIWebView initial. Comment puis-je me connecter au bouton de navigation arrière et renvoyer l'utilisateur à l'UIWebView initial si l'utilisateur clique sur un lien externe?Catching back navigation button event

Répondre

2

Vous pouvez être averti des changements de contrôleur de navigation, mais je ne crois pas que vous pouvez les empêcher de se produire (protocole UINavigationControllerDelegate).

Une façon de résoudre ce problème est de mettre en place un objet à délégué (protocole de UIWebViewDelegate) du WebView et mettre en œuvre:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 

retour ici NO pour éviter d'ouvrir le lien dans la WebView, la main la demande sur à un webview dans un second contrôleur de vue, et pousser ce second contrôleur de vue sur la pile du contrôleur de navigation. De cette façon, il n'est pas nécessaire d'intercepter la navigation arrière, mais l'interface utilisateur se comporte comme l'utilisateur l'attend.