2017-04-07 11 views
12

में मैं एक tableHeaderViewviewDidLoad के अंदर के रूप में searchBar स्थापित करने के लिए कोशिश की हैअंतर viewDidLoad

func fetch() { 
    let fetchRequest:NSFetchRequest<Phone> = Phone.fetchRequest() 
    fetchRequest.sortDescriptors = [NSSortDescriptor.init(key: "header", ascending: true), NSSortDescriptor.init(key: "date", ascending: true)] 

    self.fetchedResultsController = NSFetchedResultsController.init(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: "header", cacheName: nil) 
    self.fetchedResultsController.delegate = self 

    do { 
     try self.fetchedResultsController.performFetch() 
     self.tableView.reloadData() 
    } catch {} 

} 

लेकिन मुझे नहीं पता समझें कि वे काम नहीं कर रहे हैं। एक्सकोड दुर्घटनाग्रस्त हो जाता है और वास्तव में कुछ भी नहीं होता है। और फिर मैं viewDidLoad विधि के अंदर कुछ बदलने की कोशिश की है:

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.fetch() 
    self.tableView.reloadData() 

    // SearchController initializiation 
    self.searchController = UISearchController.init(searchResultsController: nil) 
    self.searchController.delegate = self 
    self.searchController.searchBar.delegate = self 
    self.searchController.searchBar.sizeToFit() 
    self.searchController.searchResultsUpdater = self 
    self.searchController.searchBar.barTintColor = UIColor.white 
    self.searchController.searchBar.keyboardAppearance = .default 
    self.searchController.searchBar.backgroundColor = UIColor.white 
    self.searchController.hidesNavigationBarDuringPresentation = true 
    self.searchController.obscuresBackgroundDuringPresentation = false 


    self.tableView.tableHeaderView = self.searchController.searchBar 
    self.definesPresentationContext = true 



} 

सफलता! ठीक से काम करता है। मुझे समझ में नहीं आता कि क्या अंतर है?

+1

क्रैश होने पर त्रुटि संदेश क्या है? सटीक रेखा क्या है जो इसे दुर्घटनाग्रस्त करती है? कृपया स्टैक ट्रेस साझा करें। –

+0

कुछ भी नहीं! कंसोल में केवल (lldb) – Mannopson

+1

क्या कंसोल में कोई जानकारी है? आपकी समस्या को हल करने के लिए आपके प्रश्न में पर्याप्त जानकारी नहीं है। –

उत्तर

1

ऐसा इसलिए है क्योंकि आप खोज के लिए प्रतिनिधियों को सेट करते हैं ReultultsUpdater और searchBar यहां तक ​​कि आपके fetchedResultsController को प्रारंभ किया गया है। कुछ जहां आपके कोड खोज में रीसेट्सडेटाटर या सर्चबार के प्रतिनिधि तरीके आपके fetchedResultsController तक पहुंच रहे हैं और इसे शून्य प्राप्त कर रहे हैं ताकि आप ऐप क्रैश कर सकें। मेरा सुझाव है कि दुर्घटना से बचने के लिए खोज करने के लिए है रिसॉर्ट्स कंट्रोलर गणना या आलसी संपत्ति के रूप में।

2

आप, क्योंकि डेटा भी पुनः लोड करना होगा लोड नहीं हुई viewDidLoad() विधि self.tableView.reloadData() से निकालने का प्रयास करना चाहिए।

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