Je joue avec Swift pour l'apprendre et en ce moment j'ai du mal à obtenir le texte d'un UISearchBar
En ce moment, mon code ressemble à ceci:
import UIKit
class SecondViewController: UIViewController {
@IBOutlet var myWebView : UIWebView
@IBOutlet var adressbar: UISearchBar
override func viewDidLoad() {
super.viewDidLoad()
adressbar.showsScopeBar = true
var url = NSURL(string: "http://google.com")
var request = NSURLRequest(URL: url)
myWebView.scalesPageToFit = true
myWebView.loadRequest(request)
}
func searchBarSearchButtonClicked( searchBar: UISearchBar!) {
var url = NSURL(string: adressbar.text)
var request = NSURLRequest(URL: url)
myWebView.scalesPageToFit = true
myWebView.loadRequest(request)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
Dans viewDidLoad
, vous devez définir le délégué de la barre de recherche pour recevoir searchBarSearchButtonClicked
d'elle:
import UIKit
class SecondViewController: UIViewController, UISearchBarDelegate
{
@IBOutlet var myWebView : UIWebView
@IBOutlet var adressbar: UISearchBar
override func viewDidLoad()
{
super.viewDidLoad()
adressbar.showsScopeBar = true
adressbar.delegate = self
var url = NSURL(string: "http://google.com")
var request = NSURLRequest(URL: url)
myWebView.scalesPageToFit = true
myWebView.loadRequest(request)
}
func searchBarSearchButtonClicked( searchBar: UISearchBar!)
{
var url = NSURL(string: searchBar.text)
var request = NSURLRequest(URL: url)
myWebView.scalesPageToFit = true
myWebView.loadRequest(request)
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
}
}
1.La première chose est de se conformer à UISearchbarDelegate.
2.Réglez le délégué de la barre de recherche sur lui-même.
Vous pouvez trouver plus d'informations à ce sujet ici Tutoriel Swift iOS: Implémentation de la recherche en utilisant UISearchBar et UISearchBarDelegate
Réponse simple (non spécifique) pour ceux qui arrivent ici via la recherche:
Si le nom de votre point de vente pour votre UISearchBar est "searchBar" ...
@IBOutlet weak var searchBar: UISearchBar!
Ensuite, le texte entré par l'utilisateur dans UISearchBar est appelé ...
searchBar.text
Deux choses courantes Swift oublient: 1. Assurez-vous d'ajouter la classe UISearchBarDelegate
...
ViewController: UIViewController, UISearchBarDelegate
N'oubliez pas d'identifier votre classe de vue en tant que délégué ... Dans viewDidLoad
, vous pouvez écrire ...
searchBar.delegate = self
Si vous oubliez # 1 ci-dessus, vous ne pourrez pas compléter automatiquement les méthodes que vous devrez implémenter comme ...
func searchBarSearchButtonClicked(_ seachBar: UISearchBar) { your code }
... qui vous est donné par le protocole délégué.