Swift: UISearchBar: Obtener el texto al botón de búsqueda hacer clic

Estoy jugando con Swift para aprender de ella y ahora estoy teniendo problemas para obtener el texto de un UISearchBar

Ahora mi código es este:

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()
    }
}
  • Puede decirnos más sobre el problema que están teniendo? Es searchBarSearchButtonClicked ser llamado? Si usted utiliza adressbar.text en lugar de searchbar.text? Veo que no hay ningún intento de aquí a tocar la barra de búsqueda.
  • searchBarSearchButtonClicked no se llama
  • ¿Gancho es la acción hasta que la función de algún modo?
  • Probablemente no. ¿cómo puedo conectar es de acción para que la función?
InformationsquelleAutor Eudoxus | 2014-07-17

3 Kommentare

  1. 31

    En viewDidLoad debe establecer el delegado de la barra de búsqueda para recibir searchBarSearchButtonClicked de ella:

    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()
        }
    }
    • gracias por responder Alex, su trabajo.
  2. 0

    Simple (no específica) de respuesta para los que llegan aquí a través de la búsqueda:

    Si el nombre del establecimiento para su UISearchBar es ‘barra de búsquedas’…

    @IBOutlet weak var searchBar: UISearchBar!

    A continuación, el texto introducido por el usuario en UISearchBar se llama…

    searchBar.text

    Dos cosas en común Swift codificadores de olvidar:
    1. Asegúrese de agregar UISearchBarDelegate clase…

    ViewController: UIViewController, UISearchBarDelegate
    1. No te olvides de identificar la clase de vista como el delegado…
      Dentro de viewDidLoad se puede escribir…

      searchBar.delegate = self

    Si usted se olvida #1 por encima de usted no será capaz de auto-completar los métodos que usted necesitará para implementar como…

    func searchBarSearchButtonClicked(_ seachBar: UISearchBar) { your code }

    … que es proporcionada por el delegado de protocolo.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea