【问题标题】:Create a segue to another view controller through search bar?通过搜索栏创建到另一个视图控制器的segue?
【发布时间】:2017-03-30 12:49:48
【问题描述】:

如何通过搜索栏创建到另一个视图控制器的segue? 结果搜索栏的字符串值以编程方式转到 newViewController 中的新字符串变量。我该怎么做?

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { // 这里我试图捕捉用户输入 userInput = "http://api.giphy.com/v1/gifs/search?" + "q=" + searchBar.text! + "&api_key=dc6zaTOxFJmzC" performSegue(withIdentifier: "searchView", sender: self) } //我的转场 覆盖函数准备(对于segue:UIStoryboardSegue,发件人:任何?){ 如果 segue .identifier == "searchView" { 让 DestViewController = segue.destination 为!搜索结果控制器 DestViewController.userInputRequest = 用户输入 } //我的新视图控制器 类 SearchResultController: UICollectionViewController, UICollectionViewDelegateFlowLayout, UISearchBarDelegate { 变种用户输入请求:字符串=“” 让 userRequestArray = [图像]() 覆盖 func viewDidLoad() { }

【问题讨论】:

  • 这有点不清楚,你能描述更多关于你想要实现的目标吗?
  • 用户输入搜索栏文本。当用户点击键盘上的搜索按钮时,搜索栏的结果需要打开带有结果的新集合视图。我需要捕捉用户输入的内容,并将此输入传递给新视图控制器中的新值以进行进一步处理
  • 现在好多了,你能在问题中添加一些代码吗?我还建议在评论中添加描述作为问题的一部分,以使其更清晰。
  • @AhmadF,我添加了代码
  • 这是您问题的答案吗? :)

标签: swift uisearchbar


【解决方案1】:

首先,确保searchBar.delegate 连接到viewController。

你应该从UISearchBarDelegate实现searchBarSearchButtonClicked(_:)方法:

告诉代理点击了搜索按钮。

在您的情况下,当用户点击键盘上的“搜索”按钮时,它将被调用。

所以,你应该做到以下几点:

// don't forget to add 'UISearchBarDelegate'
class ViewController: UIViewController, UISearchBarDelegate {

   //...

    func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
        if let text = searchBar.text {
            // here is text from the search bar
            print(text)

            userInput = text

            // now you can call 'performSegue'
            performSegue(withIdentifier: "searchView", sender: self)
        }
    }
}

编辑:

如果您不使用情节提要(和转场),代码应该是这样的:

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
    if let text = searchBar.text {
        // here is text from the search bar
        print(text)

        let searchResultController: SearchResultController = SearchResultController()
        searchResultController.userInputRequest = text
        navigationController?.pushViewController(searchResultController, animated: true)
    }
}

希望这会有所帮助。

【讨论】:

  • 我有这个错误:没有标识符'searchView
  • 为什么?您必须在情节提要中的两个 viewControllers 之间创建...如果您不知道该怎么做,请查看this answer
  • 我没有在这个项目中使用故事板
  • 那么你为什么要实施performSegue(withIdentifier: "searchView", sender: self) and override func prepare(for segue: UIStoryboardSegue, sender: Any?)??伙计,这就是为什么你的问题应该描述你到底面临什么......
  • 对不起。如何在我的情况下创建 segue?
猜你喜欢
  • 2016-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多