2015-02-23 13 views
9

Używam UISearchController w iOS 8 z następującym intializaiton w viewDidLoad kontrolera widoku wbudowanego w kontroler tabUISearchController sprawia, że ​​kontroler czarny

_searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; 

    _searchBar = _searchController.searchBar; 
    [_searchController.searchBar sizeToFit]; 
    _searchController.searchBar.delegate = self; 
    _searchController.searchResultsUpdater = self; 
    _searchController.dimsBackgroundDuringPresentation = NO; 
    _searchController.hidesNavigationBarDuringPresentation = NO; 
    self.definesPresentationContext = NO; 
    _shopsTable.tableHeaderView = _searchController.searchBar; 

I zostały wdrożone

- (void) updateSearchResultsForSearchController:(UISearchController *)searchController i (void)filterContentForSearchText:(NSString *)searchText

i wyszukiwanie działa poprawnie, tabela jest poprawnie aktualizowana, itp.

Ale!

Jeśli przełączę zakładki, gdy kontroler wyszukiwania jest aktywny (po prostu dotykając paska wyszukiwania lub z jakimś tekstem) do innej karty, a następnie wracam do karty wyszukiwania, otrzymuję pusty ekran z tylko paskiem wyszukiwania, np. to

enter image description here

W tym przypadku, mogę szukać rzeczy, które zaczynają się lar, który wrócił wyświetlanych wyników i ich correcly. Ale jeśli przełączę karty i wracam do zakładki wyszukiwania, otrzymuję pusty ekran w ten sposób. Jedynym sposobem powrotu kontrolera do jego pierwotnego stanu jest wykonanie _searchController.active = NO. Ale jeśli użytkownik chce zachować to wyszukiwanie, nie mogę go po prostu dezaktywować.

Jestem pewien, jestem brakuje czegoś, ale ponieważ nie ma wiele do zrobienia w UISeachController, nie mogę dowiedzieć się, co jest przyczyną tego ..

+0

można proszę dostarczyć przykładowy kod celu c, utknąłem z tym samym problemem? Jestem bardzo nowy w rozwoju IOS. Mam oddzielny kontroler widoku dla wyszukiwania oraz głównej listy. to jest przyczyną problemu. – Amith

Odpowiedz

20

Spróbuj self.definesPresentationContext = TAK; zamiast NIE. Oto, jak skonfigurować mój UISearchController, ale nie zrobiłem tego w ten sposób w UITabBarController wcześniej.

func setupSearchController() { 
    let resultsController = UIStoryboard(name: "ATPageTableViewController", bundle: nil).instantiateViewControllerWithIdentifier("ATPageTableSearchResultsViewController") as! ATPageTableSearchResultsViewController 
    searchController = UISearchController(searchResultsController: resultsController) 
    searchController.delegate = self 
    resultsController.delegate = self 
    resultsController.cellIdentifier = ATDataSetItemTableViewCellIdentifier; 
    resultsController.table = self.table! 
    searchController.searchBar.sizeToFit() 
    self.tableView.tableHeaderView = searchController.searchBar 
    searchController.searchResultsUpdater = self 
    searchController.searchBar.delegate = self 
    definesPresentationContext = true 

} 
+1

Dzięki, nie pomogło mi to bezpośrednio, ale doprowadziło mnie to do problemu. Użyłem kontrolera widoku z delegatami tabel, a kiedy przełączyłem się na kontroler widoku stołowego, problem został rozwiązany. –

0

Wpisz poniższy kod w widokuDidLoad mehtod.

self.definesPresentationContext = true

searchController.searchResultsUpdater = własnym

searchController.searchBar.delegate = własnym

searchController.dimsBackgroundDuringPresentation = false searchController.definesPresentationContext = true

Powiązane problemy