Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Attempting to load the view of a view controller while it is deallocating... UISearchController

I have code that creates a UISearchController' in my UIVIew'sviewDidLoad`.

 self.resultSearchController = ({         let controller = UISearchController(searchResultsController: nil)         controller.searchResultsUpdater = self         controller.searchBar.delegate = self         controller.dimsBackgroundDuringPresentation = false         controller.searchBar.sizeToFit()         controller.hidesNavigationBarDuringPresentation = false //prevent search bar from moving         controller.searchBar.placeholder = "Search for song"          self.myTableView.tableHeaderView = controller.searchBar          return controller      })() 

Right after this closure finishes, this warning appears in the console:

Attempting to load the view of a view controller while it is deallocating is not allowed and may result in undefined behavior (<UISearchController: 0x154d39700>) 

I don't get what I am doing wrong. This similar question is not really my situation (At least I don't think so). What is going on?

like image 856
MortalMan Avatar asked Aug 29 '15 03:08

MortalMan


1 Answers

UISearchController's view has to be removed from its superview before deallocate. (guess it is a bug)

Objective-C...

-(void)dealloc {      [searchController.view removeFromSuperview]; // It works! } 

Swift 3...

deinit {     self.searchController.view.removeFromSuperview() } 

I struggled with this issue for a couple of weeks. ^^

like image 83
JJH Avatar answered Oct 12 '22 11:10

JJH