在 swift 中获取搜索栏文本

Get searchbar text in swift

我想在我的应用程序中使用搜索栏。但是我找不到任何教程。

我的问题很简单:当用户按下输入按钮时,如何获取搜索栏文本?

我的视图控制器中需要这样的东西:

override func userPressedToEnter(text: String) {
     println("User entered: \(text)")
}

如何在 swift 中执行此操作?

我会看一下 UISearchBarDelegate 协议: https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UISearchBarDelegate_Protocol/index.html

让您的视图控制器 class 符合此协议,您将拥有与搜索栏交互所需的一切。或者,您 可以 进入搜索栏文本字段,但 Apple 通过此协议为您提供了一种更清晰、更好、事件驱动的方式。

假设您的情节提要中有一个简单的搜索栏,请确保将其连接为插座。然后以此为例。 Use UISearchBarDelegate the reference 以了解有关您可用的委托方法的更多信息。

import UIKit

class ViewController: UIViewController, UISearchBarDelegate {

@IBOutlet var searchBar:UISearchBar!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        searchBar.delegate = self
    }

    func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
        print("searchText \(searchText)")
    }

    func searchBarSearchButtonClicked(searchBar: UISearchBar) {
        print("searchText \(searchBar.text)")
    }

}

假设您有一个要搜索的 table 视图,将搜索栏和搜索控制器添加到情节提要中的 table 视图。这将连接您需要的所有数据源/委托连接。

然后在您的table视图中您可以使用:

func searchDisplayController(controller: UISearchDisplayController!, shouldReloadTableForSearchString searchString: String!) -> Bool {
  doStuffWithSearchText(searchBar.text, scope: 0)
}

只要他们更改搜索栏中的文本,就会调用它。每次他们更改文本时更新显示的数据是很常见的,但如果您只需要在他们点击搜索按钮时执行此操作,请改用此功能:

func searchBarSearchButtonClicked(searchBar: UISearchBar) {
  doStuffWithSearchText(searchBar.text, scope: 0)
}

并且您可以从搜索结果控制器中获取文本:

controller.searchBar.text

或从搜索栏:

searchBar.text

如果您没有使用 table视图控制器:

  • 添加搜索栏
  • 将您的视图控制器连接为搜索栏的委托
  • 然后使用 searchBarSearchButtonClicked: 函数来处理他们点击 "Search" 按钮或 searchBar(searchBar: UISearchBar, textDidChange searchText: String) 来处理 w

我写了一篇关于使用 table 视图控制器执行此操作的教程,其中包含所有详细信息:Adding a Search Bar to a Table View in Swift