navigateur perso via une webview

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.


Réponses

  • 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).


  • BillyZeBlackBillyZeBlack Membre
    avril 2017 modifié #3

    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 ???)


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


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

  • BillyZeBlackBillyZeBlack Membre
    avril 2017 modifié #6

    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...




  • 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 

Connectez-vous ou Inscrivez-vous pour répondre.