Aller au contenu


Photo

navigateur perso via une webview


  • Please log in to reply
6 réponses à ce sujet

#1 BillyZeBlack

BillyZeBlack

    Planteur de pousses

  • Membre
  • Pip
  • 6 messages

Posté 23 avril 2017 - 15:46

Bonjour à tous,

 

J'essaie de creer un navigateur perso. 

Dans mon viewcontroller j'ai ajouté une webview et une search bar.

Via ma classe, je declare bien les delegate pour la webview et la searchbar.

J'implémente la methode "searchBarSearchButtonClicked". 

L'application compile bien, mais lorsque je la lance, à aucun moment la fonction est appelé...

Je vous fournis mon code, mais je doute que cela vienne de là, je pense que j'ai du oublié de faire un truc...

Merci pour l'attention portée.

Fichier joint  Sans titre.jpeg   128,08 Ko   0 téléchargement(s)



#2 Larme

Larme

    Broyeur de fèves

  • Artisan chocolatier
  • PipPipPipPipPipPip
  • 1 981 messages
  • LocationParis

Posté 23 avril 2017 - 15:55

Si tu utilises Swift 3, essayes avec la nomenclature Swift 3:

 func searchBarSearchButtonClicked(_ searchBar: UISearchBar)

Si tu utilises bien Swift 3, favorites URL plutôt que NSURL, URLRequest plutôt que NSURLRequest, etc.

 

Et il aurait été sympa de donné également la raison du warning de ta méthode (le petit triangle jaune sur le côté), car elle t'indique peut-être déjà le soucis.

 

Dernier point :
Un screenshot c'est bien quand on a des trucs visuels qui sont durs à indiquer à l'écrit, mais favorise toujours un copié/collé de ton code.

Pourquoi ? Parce que si j'ai besoin de réécrire une partie de ton code pour mettre en avant une erreur, reprendre tes noms de variables etc, et bien si je ne peux pas faire un copié/collé et le modifier moi-même, mais que je doive TOUT retaper moi-même, potentiellement, j'abandonnerais l'idée de t'aider, je ne ferais pas l'effort. De plus, une image ça peut devenir inaccessible (hébergeur HS, etc.), tandis que le texte non (enfin, il a la même durée de vie que ta question).


Tant que vous avez des dents, mangez des pommes. Tant que vous avez de l'argent, croquez la Pomme.

#3 BillyZeBlack

BillyZeBlack

    Planteur de pousses

  • Membre
  • Pip
  • 6 messages

Posté 23 avril 2017 - 17:43

Bonjour Larme et merci pour ta réponse

 

Pour ce qui est du warning, il s'agisait de la nomenclature pour le nommage de la fonction.

Désolé, pour ce qui est de l'apport d'informations, je ferai attention la prochaine fois, histoire que vous ne perdiez pas de temps à essayer de comprendre ce que j'ai essayer de faire...

 

Voici mon code avec les rectifications recommandées : 

import Foundation
import UIKit

class Navigateur : UIViewController, UIWebViewDelegate, UISearchBarDelegate {
    
    @IBOutlet var wv : UIWebView!
    let moteurRecherche = "Google"
    
    
    // gere la bar de recherche
    func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
        //On récupère le texte entré dans la search bar
        if let text = searchBar.text {
            //On vérifie que
            if let url = URL(string: text) {
                let request = URLRequest(url: url)
                wv.loadRequest(request)
            } else {
                if moteurRecherche == "Google" {
                    //On remplace les espaces par des + pour faire une recherche google
                    let recGoogle = text.replacingOccurrences(of: " ", with: "+")
                    //On crée l'url
                    let urlGoogle = URL(string: "https://www.google.com/#q=\(recGoogle)")
                    let req = URLRequest(url: urlGoogle!)
                    wv.loadRequest(req)
                } else if moteurRecherche == "Yahoo" {
                    let recYahoo = text.replacingOccurrences(of: " ", with: "+")
                    let urlYahoo = URL(string: "https://search.yahoo.com/search?p=\( recYahoo)")
                    let req = URLRequest(url: urlYahoo!)
                    wv.loadRequest(req)
                }
            }
        }
    }
    //
    
    
    // la navigation
    @IBAction func arriere(sender : UIBarButtonItem) {
        if wv.canGoBack {
            wv.goBack()
        }
    }
    
    @IBAction func avant(sender : UIBarButtonItem) {
        if wv.canGoForward {
            wv.goForward()
        }
    }
    
//

}

Mon probleme reste le même, c'est comme si je n'avais pas lié ma classe à mon controller et du coup, rien de se passe (petite question, pour lier une classe à un controller, il suffit de renommer le controller visé avec le nom de la classe en question ???)


Modifié par Joanna Carter, 25 avril 2017 - 12:30 .
Balises de code ajoutées


#4 Eric P.

Eric P.

    Torréfacteur de fèves

  • Artisan chocolatier
  • PipPipPipPipPip
  • 725 messages
  • LocationTours

Posté 23 avril 2017 - 20:23

Par contre pour le code il y a des balises exprès que pour ça qui font tout joli...



#5 BillyZeBlack

BillyZeBlack

    Planteur de pousses

  • Membre
  • Pip
  • 6 messages

Posté 26 avril 2017 - 16:17

... Personne n'a une idée...



#6 BillyZeBlack

BillyZeBlack

    Planteur de pousses

  • Membre
  • Pip
  • 6 messages

Posté 26 avril 2017 - 17:28

Pourquoi comment je ne sais pas, mais il fonctionne...

En fait je viens de comprendre pourquoi il ne fonctionnait pas. Le code que j'ai, nécessite de mettre un espace après le mot entré dans la barre de recherche, alors que moi je tapais sur la touche "entré" directement après le mot...

Du coup je viens de m'apercevoir que ce code ne reconnait pas une url...



#7 Ulysse

Ulysse

    Planteur de pousses

  • Membre
  • Pip
  • 5 messages

Posté 27 avril 2017 - 20:53

Par contre pour le code il y a des balises exprès que pour ça qui font tout joli...

 

Oui mais e codage est correct juste on peut utiliser d'autres commandes plus simples  :bravo!:






0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)