2015-05-27 11 views
15

में नहीं दिखाया गया है मेरे पास UICollectionView है। UINavigationBar में खोज बटन पर क्लिक करने पर, मैं UINavigationItem के लिए शीर्षकदृश्य के रूप में UISearchController के searchbar जोड़ रहा हूं। आईफोन के लिए यह ठीक से काम कर रहा है। आईपैड के लिए cancel बटन नहीं दिखाया गया है। अकेले सर्चबार पूरी चौड़ाई लेता है।रद्द करें बटन UISearchBar

enter image description here

किसी को भी इस पर मेरी मदद कर सकते हैं ?. अग्रिम में धन्यवाद।

+0

iPhone और iPad के लिए अलग स्टोरीबोर्ड या xib का उपयोग कर रहे हैं? –

+0

नहीं। मैं स्टोरीबोर्ड या xib का उपयोग नहीं कर रहा हूं। –

+0

'searchBar.showsCancelButton = YES;' –

उत्तर

17

iOS7 रद्द बटन नहीं दिखाती है।

UISearchBar *searchBar = [UISearchBar new]; 
searchBar.showsCancelButton = YES; 
[searchBar sizeToFit]; 
UIView *viewForSearchBar = [[UIView alloc]initWithFrame:searchBar.bounds]; 
[viewForSearchBar addSubview:searchBar]; 
self.navigationItem.titleView = viewForSearchBar; 
+0

से अच्छा चयन: http://stackoverflow.com/questions/18986407/ios7-when-uisearchbar-added-in-uinavigationbar-not-showing-cancel- बटन –

2

इसे आजमाएं। शो रद्द बटन के लिए एक चेकमार्क जोड़ें। जब एक नेविगेशन bar.You इस तरह एक और दृश्य में searchbar रख सकते हैं करने के लिए जोड़ा

enter image description here

+0

ओपी ने उल्लेख किया कि यह आईफोन में काम करता है लेकिन आईपैड – Gerald

6

मुझे एक ही समस्या थी, आईफोन पर खोज रद्द किया गया था, लेकिन आईपैड पर यह नहीं था।

UISearchBar को में लपेटने का कामकाज मेरे लिए अच्छा काम नहीं करता क्योंकि इसकी रोटेशन पर अलग-अलग उपस्थिति और गलत चौड़ाई थी।

मेरा समाधान एक सरल है - रद्द करने के बिना उपयोग की खोज करें, और UIBarButtonItem के रूप में रद्द करें।

+0

यह मेरे लिए सही उत्तर जैसा लगता है। रद्द करें बटन आईपैड पर समर्थित नहीं है, इसलिए इसे मैन्युअल रूप से 'UIBarButtonItem' के रूप में जोड़ें। –

0

स्विफ्ट संस्करण: -

मैं @Nikita खंडेलवाल विधि की कोशिश की, लेकिन अभी भी यह ipad दृश्य के लिए फिट नहीं करता है। यहाँ स्विफ्ट कोड है, जो ठीक किया जवाब के रूप में दिया गया था है: -

let searchBar: UISearchBar = UISearchBar() 
searchBar.showCancelButton = true 
searchBar.placeholder = "Search Your Job Title" 
searchBar.fitToSize() 
searchBar.delegate = self //do not need if you delegate searchBar 
let viewForSearchBar: UIView = UIView(frame: searchBar.bounds) 
viewForSearchBar.addSubview(searchBar) 
self.navigationItem.titleView = viewForSearchBar 

********* लेकिन सही ढंग से बटन को रद्द करने और देखने के लिए फिट स्थापित करने के लिए एक और तरीका है: -

नेविगेशन बार शीर्षक दृश्य के रूप में
  1. सेट खोज पट्टी: -

    let searchBar: UISearchBar = UISearchBar() 
    searchBar.showCancelButton = true 
    searchBar.placeholder = "Search Your Job Title" 
    searchBar.delegate = self //do not need if you delegate searchBar 
    self.navigationItem.titleView = searchBar 
    
  2. खींचें और दृश्य नियंत्रक & नाम यह रद्द के रूप में के दाईं ओर बार बटन छोड़ देते हैं।

  3. फिर इस समारोह के लिए उस बटन कनेक्ट: -

    @IBAction func iPadCancelButton(sender: AnyObject) { 
         UIApplication.sharedApplication().sendAction("resignFirstResponder", to:nil, from:nil, forEvent:nil) 
         self.dismissViewControllerAnimated(true, completion: nil) 
    } 
    
0
Added rightBarButtonItem with selector will work fine for me. And adding searchBar inside view before setting to navigation title view was not showing properly. 
Code:- 
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.dismissView)) 
func dismissView() { 
     if self.controller?.navigationController?.popViewController(animated: true) == nil { 
      self.controller?.dismiss(animated: true, completion: nil) 
     } 
    } 
संबंधित मुद्दे