我想在我的应用中使用搜索栏。但是我找不到任何教程。
我的问题很简单:用户预示输入按钮时,如何获取搜索栏文本?
我在视图控制器中需要这样的东西:
override func userPressedToEnter(text: String) {
println("User entered: (text)")
}
我该如何在Swift中执行此操作?
假设您的故事板中有一个简单的搜索栏,请确保将其连接为插座。然后以此为例。使用Uisearchbardelegate参考以了解有关您可用的委托方法的更多信息。
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)")
}
}
我会看一下Uisearchbardelegate协议: https://developer.apple.com/library/prerelease/ios/documentation/uikit/reference/uisearchbardelegate_protocol/index.html
使您的视图控制器类符合此协议,您将拥有与搜索栏进行交互所需的一切。另外,您可以在搜索栏文本字段上获取 can ,但Apple通过此协议为您提供了更清洁,更良好的事件驱动方式。
假设您有一个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:uisearchbar,textDidChange searchText:string)来处理w
我写了一个有关使用表视图控制器进行所有详细信息的教程:将搜索栏添加到Swift