2015-02-23 3 views
9

Я использую UISearchController в прошивке 8 со следующим intializaiton в viewDidLoad контроллера просмотра встроенного в закладке контроллереUISearchController делает контроллер черного

_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; 

Я реализованный

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

и поисковые работы, табличное представление обновляется должным образом и т. Д.

Но!

Если я переключаю вкладки во время активного поиска (просто нажимая на панель поиска или с некоторым текстом) на другую вкладку, а затем возвращаюсь к вкладке поиска, я получаю пустой экран с только панелью поиска, например это

enter image description here

В этом случае я искать вещи, которые начинаются с lar, который сделал возвращать результаты и отображены их correcly. Но если я переключу вкладки и вернусь на вкладку поиска, я получу пустой экран. Единственный способ, по которому контроллер возвращается в исходное состояние, - это если я делаю _searchController.active = NO. Но если пользователь хочет сохранить этот поиск активным, я не могу просто его отключить.

Я уверен, что я что-то не хватает, но так как там не так много, чтобы сделать в UISeachController, я не могу понять, что является причиной этого ..

+0

может пожалуйста предоставить образец объектного кода c, я застрял с той же проблемой? Я очень новичок в разработке IOS. У меня есть отдельный контроллер просмотра для поиска, а также основной список. это причина проблемы. – Amith

ответ

20

Попробуйте self.definesPresentationContext = YES; вместо НЕТ. Вот как я настраиваю свой UISearchController, но раньше я этого не делал в UITabBarController.

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

Спасибо, он не помог мне напрямую, но это привело меня к проблеме. Я использовал контроллер представления с делегатами таблицы, и как только я переключился на контроллер таблицы, проблема решена. –

0

Напишите приведенный ниже код в видеDidLoad mehtod.

self.definesPresentationContext = истинный

searchController.searchResultsUpdater = само

searchController.searchBar.delegate = само

searchController.dimsBackgroundDuringPresentation = ложь searchController.definesPresentationContext = истина

Смежные вопросы