2015-04-23 18 views
10

के लिए सर्चबार को ओवरलैप नहीं करेगा और मुझे UISearchController में समस्या हो रही है, जहां मेरे पास सर्चबार में टेक्स्ट है और वीसी को खारिज कर दिया गया है, तो खोजबार दूर नहीं जायेगा और बस स्क्रीन पर रहेगा अन्य वीसी में सबकुछ ओवरलैप करना। फिर यदि आप रद्द करें बटन दबाते हैं तो यह क्रैश हो जाता है।UISearchController आईओएस 8 स्विफ्ट

एसओ पर कुछ समाधान करने की कोशिश की है लेकिन कोई भी काम नहीं किया है। :/

self.resultSearchController = ({ 
     let controller = UISearchController(searchResultsController: nil) 
     controller.searchResultsUpdater = self 
     controller.dimsBackgroundDuringPresentation = false 
     controller.hidesNavigationBarDuringPresentation = false 
     controller.searchBar.sizeToFit() 

     controller.searchBar.searchBarStyle = UISearchBarStyle.Minimal 
     controller.searchBar.barTintColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1) 
     controller.searchBar.tintColor = UIColor.blackColor() 

     controller.definesPresentationContext = true 
     controller.edgesForExtendedLayout = UIRectEdge.None 
     self.tableView.contentInset = UIEdgeInsetsMake(64, 0, 0, 0) 

     self.tableView.tableHeaderView = controller.searchBar 

     return controller 
    })() 

इस पर किसी भी मदद की सराहना करते हैं!

अद्यतन: तो मुझे थोड़े-बहुत अच्छे समाधान मिलते हैं जो सेट करने के लिए है .active = झूठ में दृश्य WillDisappear। हालांकि, समस्या एक खोज है बैर आर्टिफैक्ट पूरी तरह से गायब होने से पहले एक दूसरे के लिए अगले/पिछले वीसी पर दिखाएगा।

उत्तर

15

निम्नलिखित बदलें:

controller.definesPresentationContext = true 

को
self.definesPresentationContext = true 

सेटिंग भी खोज पट्टी जब आप धक्का और चालू और बंद नेविगेशन ढेर एक दृश्य नियंत्रक पॉप के राज्य बरकरार रखता है।

आप Apple's Documentation on UIViewController पर definesPresentationContext सेटिंग के बारे में पढ़ सकते हैं।

+0

वाह। धन्यवाद। –

+1

आपने अपना दिन बचाया। धन्यवाद – masgar

+0

धन्यवाद। मुझे इस विधि को नहीं पता था। self.definesPresentationContext = true – Alexander

0

यदि आप self.definesPresentationContext = true का उपयोग करने में सक्षम हैं तो शायद यह करने का एक बेहतर तरीका है। मेरी कॉन्फ़िगरेशन में मैं UISearchController के साथ एक और बग फिक्स कर रहा था, परिभाषित करता है कि प्रस्तुतिकरण कॉन्टेक्स्ट को गलत पर सेट किया गया है।

बजाय मैं

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 
    [self.searchController setActive:FALSE]; 
} 
को

कॉल करने से बंद:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    [super prepareForSegue:segue sender:sender]; 
    [self.searchController setActive:FALSE]; 
} 

और है कि चाल करने के लिए लग रहा था।

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