2016-04-10 13 views
0
Start

2 in meiner schnellen app ich habe mit einer Suchleiste eine Tabellenansicht versteckt werden:schnelle Suche Bar und Navigationsleiste werden nach

enter image description here

Aber wenn tippen Sie auf der Suchleiste, meine Navigationsleiste und Die Suchleiste wird ausgeblendet.

enter image description here

Dies ist mein Code, der

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

      return controller 
     })() 

im viewDidLoad i bekommen Am Anfang auch diese Meldung:

Der Versuch, die Ansicht eines View-Controller, während zu laden Es ist Freigabe ist nicht zulässig und kann zu undefiniertem Verhalten führen ()

Meine Frage ist, wo ist mein Fehler? :/

+0

Haben Sie versucht, ein globales machen (und stark) Objekt für 'UISearchController'? – Nishant

+0

was machst du mit einem globalen und starken Objekt? Ich habe diese Zeile am Anfang: 'var resultSearchController = UISearchController()' – Stack108

+0

niemand eine Idee? : "( – Stack108

Antwort

0

von this Tutorial können Sie diesen Code verwenden, um das Problem zu lösen.

self.navigationController!.navigationBar.translucent = false 
searchController!.hidesNavigationBarDuringPresentation = false 

// This makes the view area include the nav bar even though it is opaque. 
// Adjust the view placement down. 
self.extendedLayoutIncludesOpaqueBars = true 
self.edgesForExtendedLayout = UIRectEdge.Top 
0

Sie haben Ihren Code mit der unten zu ändern, wenn Sie es funktionierte perfekt machen wollen:

 self.resultSearchController = UISearchController(searchResultsController: nil) 
     self.resultSearchController.searchResultsUpdater = self 
     self.resultSearchController.searchBar.delegate = self 
     self.definesPresentationContext = true 
     self.resultSearchController.dimsBackgroundDuringPresentation = false 
     self.resultSearchController.hidesNavigationBarDuringPresentation = true 
     if #available(iOS 11.0, *) { 
      self.navigationItem.searchController = self.resultSearchController 
     } else { 
      self.tableView.tableHeaderView = self.resultSearchController.searchBar 
     } 
Verwandte Themen