Vidéo: Effacer l’historique, le cache et les cookies sur votre iPhone ou iPad – Assistance Apple 2025
Une chose intéressante à propos des vues dans votre application iOS qui charge (ou peut) charger du contenu Web réel dans votre application au lieu d'utiliser un navigateur. que les liens sont en ligne et que les utilisateurs peuvent suivre ces liens à partir de cette vue si vous les laissez.
Une fois que l'utilisateur est sur le site Web météo, l'utilisateur peut vouloir regarder le lien NWS New York, NY dans le coin supérieur gauche. Cependant, si l'utilisateur devait suivre ce lien, il n'aurait aucun moyen de revenir à la page d'origine.
Hmm.
Pour pouvoir revenir à la vue d'origine, vous devez créer un autre bouton et l'étiqueter Retour à Météo (ou quel que soit le précédent contrôleur) afin que l'utilisateur sache qu'elle peut l'utiliser pour revenir à la précédente. vue. Créer ce bouton est assez facile à faire.
Peut-être que vous ne voulez pas que ce bouton apparaisse lorsque l'utilisateur se trouve sur la page Web d'origine car, à ce moment-là, il n'y a pas de retour possible. Alors, comment faites-vous la trace de qui est là dans toute la structure du lien de navigation? Ici, vous êtes assisté par deux méthodes de délégué de vue Web, webView: shouldStartLoadWithRequest: navigationType: et webViewDidFinishLoad:.
webView: shouldStartLoadWithRequest: navigationType: est une méthode de délégué UIWebView. Il est appelé avant qu'une vue Web commence à charger le contenu pour voir si l'utilisateur veut que la charge continue.
Tout d'abord, adoptez le protocole UIWebView en ajoutant le code en gras à WeatherController. h.
#import "DetailViewController.h" @interface WeatherController: DetailViewController @property (faible, non atomique) IBOutlet UIWebView * weatherView; -d
Rappelez-vous que lorsque vous adoptez un protocole de délégué, le compilateur vérifie que toutes les méthodes requises sont bien là et que tous les types sont corrects - faites-le!
Ensuite, ajoutez ce code à WeatherController. m.
- (BOOL) webView: (UIWebView *) webView shouldStartLoadWithRequest: (NSURLRequest *) demande de navigationType: (UIWebViewNavigationType) navigationType {if (navigationType == UIWebViewNavigationTypeLinkClicked) {if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { if (! [self.outils.barres containsObject: self.backButton]) {NSMutableArray * itemsArray = [self. barre d'outils. éléments mutableCopy]; [itemArray addObject: self. backButton]; [soi. barre d'outils setItems: itemsArray animé: NO];} else {self. navigationItem. rightBarButtonItem = self. backButton;}} return YES;}
Au début, vous vérifiez si l'utilisateur a touché un lien incorporé. (Vous devez voir si un lien est cliqué parce que ce message est envoyé au délégué dans plusieurs circonstances différentes.
if (navigationType == UIwebViewNavigationTypeLinkClicked) {
Ensuite, vous vérifiez si vous êtes sur un iPad ou non. Si vous utilisez un iPad, vous utiliserez une barre d'outils, mais sur un iPhone, vous utiliserez une barre de navigation.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
Si vous êtes sur un iPad et que l'utilisateur a cliqué sur un lien, vous voulez avoir un bouton Retour pour que l'utilisateur puisse revenir. S'il y en a un, vous ne voulez pas en ajouter une seconde. Donc, vous regardez le tableau d'éléments dans la barre d'outils pour voir si vous-même. backButton est déjà là.
if (! [Self.outils.barres containsObject: self.backButton])
S'il n'y a pas de bouton Précédent, ajoutez-le avec le code standard pour cela: vous copiez le tableau itms de la barre d'outils dans un tableau mutable appelé itemsArray. Ensuite, vous y ajoutez le bouton Précédent et remplacez le tableau de la barre d'outils par le tableau des éléments modifiables.
{NSMutableArray * itemsArray = [self. barre d'outils. éléments mutableCopy];[itemArray addObject: self. backButton];
[moi-même. barre d'outils setItems: itemsArray animated: NO];}
Ensuite, ajoutez la méthode goBack: au fichier WeatherController. m. C'est le message envoyé lorsque le bouton Retour à Peu importe est tapé.
- (void) goBack: (id) expéditeur {[self. weatherView goBack];}
Enfin, vous voulez vous débarrasser du bouton Retour à Peu importe lorsque vous affichez la page d'origine. Voici le code pour le faire.
- (void) webViewDidFinishLoad: (UIWebView *) webView {if ([self.google weatherView canGoBack] == NON) {NSUInteger backButtonIndex = [self. barre d'outils. éléments indexOfObject: self. backButton]; if (([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) && (backButtonIndex! = NSNotFound) {NSMutableArray * élémentsArray = [self.barre d'outils.martableCopy]; [itemArray removeObject: self.backButton]; [self.barre d'outils setItems: itemsArray animated: NO];} else {self.automation de navigation rightBarButtonItem = nil;}}}
Le message webViewDidFinishLoad est envoyé au délégué après le chargement de la vue, à ce stade, vous vérifiez s'il y a quoi que ce soit retour à (la vue web conserve une trace de ce genre de choses) Si ce n'est pas le cas, retirez le bouton de la barre d'outils ou de la barre de navigation.
