Question

J'ai une application à base de navigation. Une fois qu'une ligne est cliqué dans un tableview, je pousse un UIWebView. Le UIWebView a des liens Web en elle. L'utilisateur clique sur un lien, ce qui rend la page Web externe. Cela arrive tout dans mon application. La barre de navigation supérieure n'a pas changé avec le clic d'un lien qui rend et page Web externe. Cependant, une fois que l'utilisateur clique sur le bouton en haut de navigation de gauche, ils retournent à la tableview plutôt que le UIWebView initial. Comment puis-je câbler le bouton retour navigation et de mettre l'utilisateur au UIWebView initial si elles sont en cliquant de suivre un lien externe?

Était-ce utile?

La solution

Vous pouvez être informé du contrôleur de navigation des changements, 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

Ici retourner 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, vous n'avez pas à intercepter l'arrière, mais la navigation de l'interface utilisateur se comporte comme l'utilisateur attend.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top