我想在我的应用中使用搜索栏。但我找不到任何相关的教程。
我的问题很简单:当用户提示输入按钮时,如何获取搜索栏文本?
我在视图控制器中需要这样的东西:
override func userPressedToEnter(text: String) {
println("User entered: \(text)")
}
我怎样才能在swift中做到这一点?
答案 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控制器:
我写了一个关于使用表视图控制器进行操作的教程,该控制器具有所有细节:Adding a Search Bar to a Table View in Swift