【问题标题】:Swift: UISearchBar: Get text when search button clickedSwift:UISearchBar:单击搜索按钮时获取文本
【发布时间】:2014-09-07 16:34:38
【问题描述】:

我正在玩 Swift 来学习它,但现在我无法从 UISearchBar 获取文本

现在我的代码如下所示:

import UIKit

class SecondViewController: UIViewController {

    @IBOutlet var myWebView : UIWebView
    @IBOutlet var adressbar: UISearchBar

    override func viewDidLoad() {
        super.viewDidLoad()

        adressbar.showsScopeBar = true

        var url = NSURL(string: "http://google.com")
        var request = NSURLRequest(URL: url)

        myWebView.scalesPageToFit = true
        myWebView.loadRequest(request)
    }

    func searchBarSearchButtonClicked( searchBar: UISearchBar!) {

        var url = NSURL(string: adressbar.text)
        var request = NSURLRequest(URL: url)

        myWebView.scalesPageToFit = true
        myWebView.loadRequest(request)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

【问题讨论】:

  • 你能告诉我们更多关于你遇到的问题吗? searchBarSearchButtonClicked 被调用了吗?您是否应该使用adressbar.text 而不是searchbar.text?我看到这里没有尝试触摸搜索栏。
  • searchBarSearchButtonClicked 未被调用
  • 您是否以某种方式将其操作与该功能挂钩?
  • 可能不会。我如何将它的动作与该功能挂钩?

标签: ios swift cocoa-touch uikit uisearchbar


【解决方案1】:

viewDidLoad 中,您必须将搜索栏的代理设置为从它接收searchBarSearchButtonClicked

import UIKit

class SecondViewController: UIViewController, UISearchBarDelegate
{
    @IBOutlet var myWebView : UIWebView
    @IBOutlet var adressbar: UISearchBar

    override func viewDidLoad()
    {
        super.viewDidLoad()

        adressbar.showsScopeBar = true
        adressbar.delegate = self

        var url = NSURL(string: "http://google.com")
        var request = NSURLRequest(URL: url)

        myWebView.scalesPageToFit = true
        myWebView.loadRequest(request)
    }

    func searchBarSearchButtonClicked( searchBar: UISearchBar!)
    {
        var url = NSURL(string: searchBar.text)
        var request = NSURLRequest(URL: url)

        myWebView.scalesPageToFit = true
        myWebView.loadRequest(request)
    }

    override func didReceiveMemoryWarning()
    {
        super.didReceiveMemoryWarning()
    }
}

【讨论】:

    【解决方案2】:

    对于那些通过搜索到达这里的人的简单(非特定)答案:

    如果您的 UISearchBar 的出口名称是“searchBar”...

    @IBOutlet weak var searchBar: UISearchBar!
    

    然后调用用户在UISearchBar中输入的文字...

    searchBar.text
    

    Swift 编码人员经常忘记的两件事: 1.确保添加UISearchBarDelegate类...

    ViewController: UIViewController, UISearchBarDelegate
    
    1. 不要忘记将您的视图类标识为委托... 在viewDidLoad 里面你可以写...

      searchBar.delegate = self
      

    如果您忘记了上面的 #1,您将无法自动完成您需要实现的方法,例如...

    func searchBarSearchButtonClicked(_ seachBar: UISearchBar) { your code }
    

    ...委托协议给你的。

    【讨论】:

      【解决方案3】:

      1.首先要符合UISearchbarDelegate。

      2.将搜索栏委托设置为self。

      您可以在此处找到更多信息Swift iOS tutorial : Implementing search using UISearchBar and UISearchBarDelegate

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-16
        • 2018-09-10
        相关资源
        最近更新 更多