Swift: UISearchBar: Get text when search button clicked

cocoa-touch, ios, swift, uikit, uisearchbar

Solution

In `viewDidLoad` you must set the delegate of the search bar to be receiving `searchBarSearchButtonClicked` from it:

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()
    }
}

Problem

I'm playing around with Swift to learn it and right now I'm having trouble getting the text from a `UISearchBar` Right now my code looks like this: ``` 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() } } ```

Original source