2017-01-19 1 views
2

У меня есть таблица результатов поиска (UISearchController), которая представлена ​​в представлении, которое существует в стеке навигации. Я представляю контроллер поиска и таблицы на мой взгляд, как это:Перемещение к представлению (push) из таблицы результатов поиска (UISearchController) и сохранение результатов поиска

_searchResultsTableViewController = [[CalendarSearchResultsTableViewController alloc] init]; 
_searchResultsTableViewController.delegate = self; 

_searchController = [[UISearchController alloc] initWithSearchResultsController:_searchResultsTableViewController]; 
_searchController.delegate = self; 
_searchController.hidesNavigationBarDuringPresentation = NO; 
_searchController.dimsBackgroundDuringPresentation = YES; 
_searchController.obscuresBackgroundDuringPresentation = YES; 
_searchController.active = YES; 

_searchController.searchBar.delegate = self; 

UIEdgeInsets adjustForTabbarInsets = UIEdgeInsetsMake(0, 0, CGRectGetHeight(self.tabBarController.tabBar.frame), 0); 
_searchResultsTableViewController.tableView.contentInset = adjustForTabbarInsets; 
_searchResultsTableViewController.tableView.scrollIndicatorInsets = adjustForTabbarInsets; 

[self.navigationController presentViewController:_searchController animated:YES completion:nil]; 

Это представляет UISearchBar над UINavigationBar и таблица поиска появляется, как ожидалось. Когда пользователь выбирает результат поиска из таблицы, я хочу представить представление для выбора, нажимая его в стек навигации, пока результаты поиска остаются на месте. Теперь я работаю над тем, что представление, отображающее контроллер поиска, открывает представление, но для этого требуется, чтобы контроллер поиска отклонялся, потому что search result view представлен за таблицей результатов поиска.

Как это сделать, чтобы контроллер поиска нажимал на стек навигации search result view, позволяя пользователю вернуться к результатам поиска?

Пример того, как я ожидаю, что это сработает, можно найти в приложении iOS Mail of Calendar (при поиске).

Проект находится в объективе-C и Swift, поэтому ответы в любом случае прекрасны. Любая помощь высоко ценится!

+0

Вы пытались сохранить результаты поиска в исходном контроллере табличного, а также условия поиска - так в viewWillAppear вы можете установить этот поисковый запрос и использовать результаты serach в качестве источника данных? – Miknash

+0

Я работаю с устаревшим табличным представлением, к сожалению, поэтому я пытаюсь построить эту таблицу поиска поверх той, которая в настоящее время существует. Результаты поиска поступают из веб-вызова, поэтому у них есть отдельные источники данных. – timgcarlson

+0

Да, конечно, но это не мешает вам сохранить эти результаты. Например, в начале у вас есть пустой массив (скорее всего, нуль) результатов и массив параметров. После поиска этот массив должен содержать некоторые данные. Все идет нормально. Если вы вернетесь на экран, вы можете проверить этот массив (и поисковый запрос), и если есть еще какая-то настоящая панель поиска. – Miknash

ответ

2

Я думаю, что вам нужно внести 3 небольших изменения.

  1. _searchController.hidesNavigationBarDuringPresentation = YES;
  2. [self presentViewController:_searchController animated:YES completion:nil];
  3. self.definesPresentationContext = YES; // в viewDidLoad из ViewController, что представил searchController
+1

Это именно то, чего мне не хватало, спасибо!Я подумал, что это было что-то простое, что я отсутствовал, и получается, что это было сочетание простых вещей. Наслаждайтесь своей щедростью! – timgcarlson

+0

Извините, у меня была проблема, такая же, как @timgcarlson, но я пытаюсь, чтобы это решение не работало. возможно, я пропустил нечто большее. Спасибо –