Это действительно вызывает у меня приступы. Я вижу много информации о размещении 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? На панели инструментов справа от области поиска? Где?