2015-07-18 32 views
9

w moim kodu jest to w jaki sposób mogę skonfigurować UISearchController:błąd „Aplikacja próbowała przedstawić modalne kontroler widok na sobie” podczas aktywacji UISearchController na działanie

searchResultController = storyboard!.instantiateViewControllerWithIdentifier(DBSearchResultControllerIdentifier) as! DBSearchResultController 

searchController = UISearchController(searchResultsController: searchResultController) 

searchController.searchResultsUpdater = self 
searchController.delegate = self 

searchResultController.tableView.tableHeaderView = searchController.searchBar 

na jakiejś akcji wszystko co robię jest:

@IBAction func cityButtonTapped(sender: UIButton) { 
    searchController.active = true 
} 

Ale mam błąd:

Application tried to present modal view controller on itself. Presenting controller is UISearchController: 0x7f9a0c04a6a0

Odpowiedz

12

dokumentacja apple dla UISearchController wyraźnie mówi następujące rzeczy:

  • Ustawianie active nieruchomość na TAK wykonuje prezentację domyślnej , regulator wyszukiwania.
  • Ustaw parametr searchResultsController na nil, aby wyświetlić wyniki wyszukiwania w tym samym widoku, którego szukasz.

Tak wygląda używasz aktualnej samego kontrolera widoku jako swojej searchResultsController i stąd podczas próby ustawienia active na TAK, to próbuje modally prezentujemy aktualny pogląd na siebie i stąd ten błąd.

+0

Mój problem polegał na tym, że próbowałem wcisnąć 'searchController' na moim' navigationController'. Najwyraźniej po prostu musiałem wcisnąć mój 'searchResultController' na mój' navigationController' i zainicjować mój searchController '' '. Dziękuję Ci! – BananaNeil

+0

Nie wiem, gdzie znalazłeś to w dokumentach, ale dzięki za udostępnienie. – jday

+0

Ustawienie 'searchController.isActive = false' przed wyświetleniem VC rozwiązało problem dla mnie. –