在swift中获取搜索栏文本

时间:2015-05-05 16:21:58

标签: ios swift uisearchbar

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

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

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

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

我怎样才能在swift中做到这一点?

3 个答案:

答案 0 :(得分:19)

假设您的故事板中有一个简单的搜索栏,请确保将其作为插座连接。然后以此为例。 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) {
    println("searchText \(searchText)")
}

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

}

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

假设您有一个正在搜索的tableview,请将Search Bar和Search Controller添加到storyboard中的tableview。这将连接您需要的所有数据源/委托连接。

然后在你的tableview中你可以使用:

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

如果您没有使用tableview控制器:

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

我写了一个关于使用表视图控制器进行操作的教程,该控制器具有所有细节:Adding a Search Bar to a Table View in Swift