2016-06-02 9 views
8

मेरे पास पहले के हेडर व्यू में searchController.searchBar था लेकिन मैं कौन सी सरणी प्रदर्शित करने के लिए बटन जोड़ना चाहता था। अब जब मैंने अपने स्टोरीबोर्ड में UISearchBar जोड़ा है, तो मैं इसे अपने UISearchController से कनेक्ट करने का तरीका समझने की कोशिश कर रहा हूं, इसलिए मैं परिणामों को ठीक से अपडेट कर सकता हूं। हालांकि, यहां तक ​​कि नवीनतम एक्सकोड में भी आईबी में हमारे पास UIDisplayController है।मैं स्टोरीबोर्ड UISearchBar को प्रोग्रामेटिक रूप से बनाए गए UISearchController से कैसे कनेक्ट कर सकता हूं?

दो तरीकों से मुझे लगता है कि इसे हल कर सकते हैं, या तो उन्हें जोड़ने का एक तरीका है और मुझे यह नहीं पता है या मैं खोज सर्चर को खोजकर्ता के मूल निवासी का उपयोग करता हूं और जहां मैं इसे चाहता हूं वहां फ्रेम को बदल देता हूं। आकार बदलने के लिए ऑटोलाउट के लाभों के कारण बाद में कोशिश करने में मुझे संकोच नहीं है।

उत्तर

0

मैं हमेशा इंटरफ़ेस बिल्डर फ़ाइल में प्लेसहोल्डर दृश्य डालता हूं जो 44 अंक लंबा है। इसके बाद आप इस कंटेनर व्यू के बच्चे के रूप में SearchController.view जोड़ सकते हैं।

@IBOutlet weak var searchContainerView: UIView! 

    fileprivate lazy var searchController: UISearchController = { 
     let contactSearchViewController = self.storyboard?.instantiateViewController(withIdentifier: String(describing: ContactSearchViewController.self)) as! ContactSearchViewController 
     contactSearchViewController.delegate = self 
     contactSearchViewController.datasource = self 
     let searchController = UISearchController(searchResultsController: contactSearchViewController) 
     searchController.searchResultsUpdater = contactSearchViewController 
     searchController.dimsBackgroundDuringPresentation = false 
     searchController.definesPresentationContext = true 
     return searchController 
    }() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     searchContainerView.addSubview(searchController.searchBar) 
     let attributes: [NSLayoutAttribute] = [.top, .bottom, . left, .right] 
     NSLayoutConstraint.activate(attributes.map{NSLayoutConstraint(item: self.searchController.searchBar, attribute: $0, relatedBy: .equal, toItem: self.searchContainerView, attribute: $0, multiplier: 1, constant: 0)}) 
    } 
संबंधित मुद्दे

 संबंधित मुद्दे