2016-11-16 40 views
0

如何通过搜索栏创建一个segue到另一个视图控制器? 结果的字符串值以编程方式在NewViewController中搜索栏切换到新的字符串变量。我如何做到这一点?通过搜索栏创建一个segue到另一个视图控制器?

 



func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { 
     // Here I'm trying catch user input 

     userInput = "http://api.giphy.com/v1/gifs/search?" + "q=" + searchBar.text! + "&api_key=dc6zaTOxFJmzC" 
     performSegue(withIdentifier: "searchView", sender: self) 

     } 

 
//My segue 

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
      if segue .identifier == "searchView" { 
      let DestViewController = segue.destination as! SearchResultController 
       DestViewController.userInputRequest = userInput 
     } 

 

//My new View Controller 
    class SearchResultController: UICollectionViewController, UICollectionViewDelegateFlowLayout, UISearchBarDelegate { 

     var userInputRequest: String = "" 
     let userRequestArray = [Image]() 
     override func viewDidLoad() { 

     } 

+0

这有点不清楚,你能描述更多关于什么是你想达到什么目的? –

+0

用户输入来搜索栏文字。当用户点击键盘上的搜索按钮搜索栏的结果需要打开新的收集视图结果。我需要赶上什么用户输入,并在新的视图控制器通过这个输入新值作进一步处理 –

+0

这是现在好了,你可以在问题中添加一些代码?我还建议将评论中的描述作为问题的一部分加以说明,以使其更清楚。 –

回答

0

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

您应该UISearchBarDelegate实施searchBarSearchButtonClicked(_:)方法:

Tells the delegate that the search button was tapped.

在你的情况下,将得到当用户点击了keyborad“搜索”按钮调用。

所以,你应该如下:

// 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) 
    } 
} 

希望这有助于。

+0

我有这个错误:没有segue与标识符'searchView –

+0

为什么?你必须在故事板两个viewControllers之间创建...如果你不知道如何做到这一点,选中[这个答案](http://stackoverflow.com/questions/39904328/xcode-where-to-分配最SEGUE标识符/ 39905378#39905378) –

+0

我没有用故事板在这个项目 –

相关问题