Как вы ссылаетесь на UISearchController с помощью раскадровки


Я добавил панель поиска и контроллер отображения поиска (предполагая, что это то, что я добавляю в раскадровку, так как у них нет объекта "SearchController", чтобы вытащить).

Моя проблема заключается в том, как я могу установить свойства на этом SearchController сейчас? сам.searchController не работает, и Xcode говорит, что он автоматически добавляется, когда я добавляю UISearchBar в представление. Что я делаю не так? Причина, по которой мне нужен доступ, заключается в том, что я могу установить таблицу поиска результатов, например:

UITableViewController *searchResultsController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
 searchResultsController.tableView.dataSource = self;
 searchResultsController.tableView.delegate = self;

 self.searchController = [[UISearchController alloc] initWithSearchResultsController:searchResultsController];

self.searchController.searchResultsUpdater = self;

Я заметил пример здесь: https://github.com/dempseyatgithub/Sample-UISearchController

Который говорит, что он использует раскадровки, на самом деле не использует раскадровки для добавления в UISearchController, но использует код, выделяя и инициализируя и устанавливая фрейм.

2 5

2 ответа:

При перетаскивании строки поиска и объекта Display controller в табличное представление автоматически добавляется IBOutlet searchDisplayController, а не searchController. Он также устанавливает источник данных и делегат для вас.

Важно: UISearchDisplayController устарел в iOS 8. (Обратите внимание, что UISearchDisplayDelegate также не рекомендуется.) Для управления представлением строки поиска и отображения результатов поиска в iOS 8 и более поздних версиях вместо этого используйте UISearchController.

Как уже упоминалось в официальном документе doc, было бы лучше прекратить добавлять старый стиль UISearchDisplayController в приложения, ориентированные на iOS 8.0+. Но похоже, что они не удалили старую из библиотеки UI Controller в Xcode6. 1. Они новый UISearchController также не добавлен. Давай подождем следующего патча.

Но вы все равно можете добавить новый код:

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