Реализация Target

Поле поиска является объектом управления и так использует образец целевого действия: когда пользователь делает что-то для активации поля поиска, оно отправляет сообщение действия в целевой объект, говоря ему выполнить поиск. Кроме вызова метода действия, NSSearchFieldCell и NSSearchField не предоставьте поддержку для текстовых поисков. Необходимо реализовать поисковое поведение сами.

Простой поиск

Обычно Вы реализуете метод действия в объекте контроллера в Вашем приложении. Необходимо узнать то, что строка поиска, и затем выполните поиск с помощью критерия поиска, как проиллюстрировано в Перечислении 1.

Перечисление 1  Простой метод действия для цели поля поиска

- (IBAction)updateFilter:sender {
 
    NSString *searchString = [searchField stringValue];
    /*
     Method continues to perform the search and display the results.
     */
}

Поиск Используя поисковую категорию

Если Вы хотите поддерживать поисковые категории (см. Указание Поисковой Категории), необходимо реализовать метод действия, вызванный элементами меню категорий, а также которые вызывают самим полем поиска. Ваш метод действия категории должен записать в некотором роде пункт меню, выбранный (обычно путем запоминания тега элемента). Вы могли бы также установить строку заполнителя для поискового меню (обычно к заголовку пункта меню, для напоминания пользователю, какой элемент они выбрали), как проиллюстрировано в Перечислении 2.

  Пример перечисления 2 ищет метод пункта действия меню категорий

- (IBAction)setSearchCategoryFrom:(NSMenuItem *)menuItem {
 
    self.searchCategory = [menuItem tag];
    [[self.searchField cell] setPlaceholderString:[menuItem title]];
}

В методе действия поля поиска необходимо узнать то, что строка поиска, и затем выполните поиск с помощью критерия поиска, приняв во внимание любую категорию, которая, возможно, была установлена. Распространенный способ представлять поиск как экземпляр NSPredicate. В перечислении 3, searchCategory установлен в setSearchCategoryFrom: метод проиллюстрирован в Перечислении 2.

  Метод действия перечисления 3 В качестве примера для цели поля поиска

- (IBAction)updateFilter:sender {
    /*
     Create a predicate based on what is the current string in the
     search field and the value of searchCategory.
     */
    NSString *searchString = [self.searchField stringValue];
    NSPredicate *predicate;
 
    if ((searchString != nil) && (![searchString isEqualToString:@""])) {
        if (searchCategory == 1) {
            predicate = [NSPredicate predicateWithFormat:
                                     @"firstName contains[cd] %@", searchString];
        }
        if (searchCategory == 2) {
            predicate = [NSPredicate predicateWithFormat:
                                     @"lastName contains[cd] %@", searchString];
        }
    }
 
    /*
     Method continues to perform the search and display the results.
     */
}

Кнопка отмены

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