UISearchDisplayController
Оператор импорта
Swift
import UIKit
Objective C
@import UIKit;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 8.0.
Важный: UISearchDisplayController
осуждается в iOS 8. (Обратите внимание на то, что UISearchDisplayDelegate
также осуждается.) Для управления представлением панели поиска и результатов поиска дисплея в iOS 8 и позже вместо этого используйте UISearchController
.
Поисковый контроллер дисплея управляет дисплеем панели поиска, вместе с табличным представлением что результаты поиска дисплеев.
Вы инициализируете поисковый контроллер дисплея с панелью поиска и контроллер представления, ответственный за управление данными, которые будут искаться. Когда пользователь запускает поиск, поисковый контроллер дисплея накладывает поисковый интерфейс на исходное представление контроллера представления и показывает результаты поиска в его табличном представлении.
В дополнение к управлению доступными для поиска данными исходный контроллер представления обычно играет еще четыре роли, которые необходимо заполнить при использовании поискового контроллера дисплея. Те роли являются следующим:
Источник данных для табличного представления результатов поиска (
searchResultsDataSource
), который предоставляет данные для таблицы результатов.Делегат к табличному представлению результатов поиска (
searchResultsDelegate
), который реагирует на выбор пользователем элемента в таблице результатов.Делегат к поисковому контроллеру дисплея (
delegate
), который реагирует на события такой запуск или окончание поиска, и показа или сокрытия поискового интерфейса.Как удобство, этому делегату можно также сказать об изменениях в строке поиска или поисковом объеме, так, чтобы могло быть перезагружено представление таблицы результатов.
Делегат к панели поиска (
delegate
описанный в Ссылке класса UISearchBar), который реагирует на изменения в критериях поиска.
Как правило, Вы инициализируете поисковый контроллер дисплея от контроллера представления (обычно экземпляр UITableViewController
) это выводит на экран список. Посмотрите Простой UISearchBar с проектом примера кода Восстановления состояния для примера того, как сконфигурировать поисковый контроллер дисплея в Интерфейсном Разработчике. Для выполнения конфигурации программно установить self
для поискового контроллера представления контроллера дисплея и источника данных результатов поиска и делегата, как показано здесь:
searchController = [[UISearchDisplayController alloc]
initWithSearchBar:searchBar contentsController:self];
searchController.delegate = self;
searchController.searchResultsDataSource = self;
searchController.searchResultsDelegate = self;
Если Вы следуете за этим образцом, то в источнике данных табличного представления и методах делегата можно проверить параметр табличного представления методов для определения, какое табличное представление отправляет сообщение:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (tableView == self.tableView) {
return ...;
}
// If necessary (if self is the data source for other table views),
// check whether tableView is searchController.searchResultsTableView.
return ...;
}
Запускаясь в iOS 7.0, можно использовать поисковый контроллер дисплея с панелью навигации (экземпляр UINavigationBar
класс) путем конфигурирования поискового контроллера дисплея displaysSearchBarInNavigationBar
и navigationItem
свойства.
-
Возвращает контроллер дисплея, инициализированный с данной панелью поиска и контроллером содержания.
Объявление
Swift
init(searchBar
searchBar
: UISearchBar!, contentsControllerviewController
: UIViewController!)Objective C
- (instancetype)initWithSearchBar:(UISearchBar *)
searchBar
contentsController:(UIViewController *)viewController
Параметры
searchBar
Панель поиска.
Панель поиска не должна в настоящее время связываться с другим поисковым контроллером дисплея.
viewController
Контроллер представления, управляющий дисплеем исходного содержания, которое должно искаться.
Контроллер представления не должен в настоящее время связываться с другим поисковым контроллером дисплея.
Возвращаемое значение
Поисковый контроллер дисплея, инициализированный с данной панелью поиска и контроллером содержания.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 8.0.
-
Состояние видимости поискового интерфейса.
Объявление
Swift
var active: Bool
Objective C
@property(nonatomic, getter=isActive) BOOL active
Обсуждение
Значение по умолчанию
NO
false
.При установке этого значения непосредственно любое изменение выполняется без анимации. Использовать
setActive:animated:
если должно быть анимировано изменение в состоянии.Когда пользовательский фокус в поле поиска бара поиска, которым управляют, поисковый контроллер дисплея автоматически выводит на экран поисковый интерфейс. Можно использовать это свойство, чтобы вынудить поисковый интерфейс появиться.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 8.0.
-
Дисплеи или скрывают поисковый интерфейс, дополнительно с анимацией.
Объявление
Swift
func setActive(_
visible
: Bool, animatedanimated;
: Bool)Objective C
- (void)setActive:(BOOL)
visible
animated:(BOOL)animated;
Параметры
visible
YES
true
вывести на экран поисковый интерфейс, если это уже не выведено на экран;NO
false
скрыть поисковый интерфейс, если это в настоящее время выводится на экран.animated;
YES
true
использовать анимацию для разнообразия в видимом состоянии, иначеNO
false
.Обсуждение
Когда пользовательский фокус в поле поиска бара поиска, которым управляют, поисковый контроллер дисплея автоматически выводит на экран поисковый интерфейс. Можно использовать этот метод, чтобы вынудить поисковый интерфейс появиться.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 8.0.
-
Делегат контроллера.
Объявление
Swift
unowned(unsafe) var delegate: UISearchDisplayDelegate?
Objective C
@property(nonatomic, assign) id< UISearchDisplayDelegate > delegate
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 8.0.
-
Панель поиска. (только для чтения)
Объявление
Swift
var searchBar: UISearchBar! { get }
Objective C
@property(nonatomic, readonly) UISearchBar *searchBar
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 8.0.
-
Контроллер представления, управляющий искавшим содержанием. (только для чтения)
Объявление
Swift
var searchContentsController: UIViewController! { get }
Objective C
@property(nonatomic, readonly) UIViewController *searchContentsController
Обсуждение
Это обычно - экземпляр
UITableViewController
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 8.0.
-
Табличное представление, в котором выведены на экран результаты поиска. (только для чтения)
Объявление
Swift
var searchResultsTableView: UITableView! { get }
Objective C
@property(nonatomic, readonly) UITableView *searchResultsTableView
Обсуждение
Этот метод создает новое табличное представление, если Вы уже не существуете.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 8.0.
-
Источник данных для табличного представления, в котором выведены на экран результаты поиска.
Объявление
Swift
unowned(unsafe) var searchResultsDataSource: UITableViewDataSource?
Objective C
@property(nonatomic, assign) id< UITableViewDataSource > searchResultsDataSource
Обсуждение
Значение по умолчанию
nil
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 8.0.
-
Делегат к табличному представлению, в котором выведены на экран результаты поиска.
Объявление
Swift
unowned(unsafe) var searchResultsDelegate: UITableViewDelegate?
Objective C
@property(nonatomic, assign) id< UITableViewDelegate > searchResultsDelegate
Обсуждение
Значение по умолчанию
nil
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 8.0.
-
Заголовок для представления результатов поиска.
Объявление
Swift
var searchResultsTitle: String?
Objective C
@property(nonatomic, copy) NSString *searchResultsTitle
Обсуждение
Значение по умолчанию
nil
.Если значение
nil
, контроллер использует строку заголовка по умолчанию.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 5.0 и позже.
Осуждаемый в iOS 8.0.
-
Указывает, что панель навигации содержит панель поиска.
Объявление
Swift
var displaysSearchBarInNavigationBar: Bool
Objective C
@property(nonatomic, assign) BOOL displaysSearchBarInNavigationBar
Обсуждение
Когда Вы возвращаетесь
YES
true
для отображения панели поиска в панели навигации система использует поисковый контроллер дисплеяnavigationItem
свойство и игнорирует элемент навигации, если установлено,searchContentsController
контроллер представления. Выведенное на экран поле поиска занимает как можно больше ширины в панели навигации.Панель поиска, выведенная на экран в панели навигации, не может иметь панели объема.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
Осуждаемый в iOS 8.0.
-
Представляет поисковый контроллер дисплея в панели навигации контроллера навигации. (только для чтения)
Объявление
Swift
var navigationItem: UINavigationItem! { get }
Objective C
@property(nonatomic, readonly) UINavigationItem *navigationItem
Обсуждение
Можно сконфигурировать элемент навигации, как описано в Ссылке класса UINavigationItem, за исключением конфигурирования представления заголовка.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
Осуждаемый в iOS 8.0.