web-dev-qa-db-ja.com

Swift:UISearchBar:検索ボタンがクリックされたときにテキストを取得

私はSwiftでそれを学ぶために遊んでいますが、今はUISearchBarからテキストを取得するのに問題があります

現在、私のコードは次のようになっています。

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

viewDidLoadでは、検索バーのデリゲートがsearchBarSearchButtonClickedを受け取るように設定する必要があります。

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()
    }
}
31
Alex Zielenski

1.最初に、UISearchbarDelegateに準拠します。

2.検索バーのデリゲートを自己に設定します。

詳細については、こちらをご覧ください Swift iOSチュートリアル:UISearchBarおよびUISearchBarDelegateを使用した検索の実装

2
Shrikar

検索でここに到着した人に対する単純な(非特定の)回答:

UISearchBarのアウトレット名が「searchBar」の場合...

@IBOutlet weak var searchBar: UISearchBar!

次に、UISearchBarでユーザーが入力したテキストが呼び出されます...

searchBar.text

2つの一般的なものSwiftコーダーは忘れます:1. UISearchBarDelegateクラスを追加することを確認してください...

ViewController: UIViewController, UISearchBarDelegate
  1. ビュークラスをデリゲートとして識別することを忘れないでください... viewDidLoadの中にあなたが書くことができます...

    searchBar.delegate = self
    

上記の#1を忘れると、次のように実装する必要があるメソッドを自動補完できなくなります...

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

...デリゲートプロトコルによって提供されます。

0
John Pitts