在 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
我想在我的应用程序中使用搜索栏。但是我找不到任何教程。
我的问题很简单:当用户按下输入按钮时,如何获取搜索栏文本?
我的视图控制器中需要这样的东西:
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