Не удается заставить UISearchBar Scope Bar появляться на панели инструментов (или в любом месте) на iPad - PullRequest
4 голосов
/ 20 мая 2010

Это действительно вызывает у меня приступы. Я вижу много информации о размещении UISearchBar в верхнем ряду UITableView - но я помещаю UISearchBar в панель инструментов в верхней части моего экрана (на iPad). Я не могу найти НИЧЕГО относительно того, как обрабатывать UISearchBar и UISearchDisplayController, используя UIPopoverController на iPad. Будем весьма благодарны за любую дополнительную информацию о UISearchDisplayController с использованием UIPopoverController. Пожалуйста, помогите мне, потому что я нахожусь в конце моего ума.

Используя IB, я поместил панель инструментов на IUView на iPad. Я добавил следующее: Search Bar ( не Search Bar and Search Display) на панель инструментов. Я установил следующие параметры: Показать кнопку отмены, Показать панель области, Названия кнопок области: «Заголовок1» и «Заголовок2» (с выбранной радиокнопкой Заголовка2). Непрозрачный, Clear Context и Auto Resize проверяются. Я подключил делегата Search Bar к «Владельцу файла» и связал его с IBOutlet theSearchBar.

В моем viewWillAppear есть следующее:

    //Just in case:
    [theSearchBar setScopeButtonTitles:[NSArray arrayWithObjects:@"Near Me",@"Everywhere",nil]];
    //Just in case (again):
    [theSearchBar setShowsScopeBar:YES];
    //doesn't seem to do anything:
    //[theSearchBar sizeToFit]; 

    searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:theSearchBar contentsController:self];
    [self setSearchDisplayController:searchDisplayController];
    [searchDisplayController setDelegate:self];
    [searchDisplayController setSearchResultsDataSource:self];
    //again--does not seem to do anything..but people have suggested it:
    [theSearchBar sizeToFit]; 

Хорошо, пока, подумал я, так хорошо. Итак, я сделал файл Владелец файла .m делегатом для: UISearchBarDelegate, UISearchDisplayDelegate.

Моя проблема: мне еще предстоит реализовать делегатов, необходимых для выполнения поиска, но все же ... не должен ли я видеть scopeBar рядом с полем поиска, когда я щелкаю в поле поиска? Просто чтобы вы знали, что я вижу журнал ввода символов, поэтому делегат работает .

Вот процедура, которую я использовал, чтобы проверить, действительно ли IB поместил Scope Bar (UISegementedControl) в строку поиска:

for (UIView *v in theSearchBar.subviews) 
{
    if ([v isMemberOfClass:[UISegmentedControl class]]) 
    {             
        // You've got the segmented control!                 
        UISegmentedControl *scope = (UISegmentedControl *)v;
        // Do your thing here...
        NSLog(@"Found Scope: '%@'\n",scope);
        NSLog(@"Scope Segments: '%d'\n",[v numberOfSegments]);
    }
} 

Это показывает:

[30013:207] Found Scope: '<UISegmentedControl: 0x68a06b0; frame = (0 0; 200 44); opaque = NO; layer = <CALayer: 0x68a0600>>'
[30013:207] Scope Segments: '2'

Итак, я знаю, что есть 2 сегмента. Я также знаю, что они не появляются ... Что я делаю не так?

Почему не отображается панель Scope? Результаты UIPopoverController появляется с заголовком «Результаты» и «Результаты не найдены» (конечно), когда я набираю первый символ в моем поиске ... но без области видимости. (не то, чтобы я ожидал ничего, кроме "Результатов не найдено".

Я * задаюсь вопросом, где должна появиться панель области видимости ... в titleView UIPopover? На панели инструментов справа от области поиска? Где?

Ответы [ 2 ]

0 голосов
/ 17 января 2014

UISearchBar не отображает область видимости при внедрении в UIToolbar, это верно даже в iOS 7.

Вы должны построить свой собственный UISegment и добавить его в табличное представление результатов поиска или создать собственное представление для хранения UISearchBar, который будет отображать область.

0 голосов
/ 06 февраля 2012
[self.searchDisplayController searchBar] setScopeButtonTitles:[NSArray arrayWithObjects:@"Near Me",@"Everywhere",nil]];

Это может помочь.

...