在Swift中获取搜索栏文本



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

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

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

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

中的表视图中

最新更新