У меня есть UISearchBar
в titleView
панели навигации (это похоже на рисунок ниже), и я хочу, чтобы он работал так же, как в браузере Safari.
У меня недостаточно репутации для отправки изображений, здесь ссылка
Первое изображение
Второе изображение
Я хочу достичь:
- В нормальном состоянии панель навигации содержит 2 левую и правую кнопки,
UISearchBar
и кнопку очистки внутри этой строки поиска (выглядит как первое изображение с 2 кнопками добавления). - В состоянии поиска
view
заменяется на другоеview
, а когда он отклоняется,view
возвращается в исходное состояние. - Работает как в iOS 6, так и в 7
Я знаю, что это можно сделать, используя UISearchDisplayController
, но это не сработает. Здесь мой код:
.h: реализовать TableView DataSource/Delegate, UISearchDisplayDelegate, UISearchBarDelegate
ого
-(void) viewDidload
{
//Add left, right buttons
self.leftButton = [[UIBarButtonItem alloc] init];
[self.leftButton setStyle:UIBarButtonItemStylePlain];
[self.leftButton setTitle:@"Button"];
self.navigationItem.leftBarButtonItem = self.leftButton;
self.rightButton = [[UIBarButtonItem alloc] init];
[self.rightButton setStyle:UIBarButtonItemStylePlain];
[self.rightButton setTitle:@"Button"];
self.navigationItem.rightBarButtonItem = self.rightButton;
self.searchBar = [[UISearchBar alloc] initWithFrame:self.navigationController.navigationBar.bounds];
if (DEVICE_IS_IOS7) {
self.searchBar.searchBarStyle = UISearchBarStyleMinimal;
}
self.navigationItem.titleView = self.searchBar;
self.searchBar.delegate = self;
//----------------
self.searchController = [[UISearchDisplayController alloc] initWithSearchBar:self.searchBar contentsController:self];
self.searchController.delegate = self;
self.searchController.searchResultsDataSource = self;
self.searchController.searchResultsDelegate = self;
}
/*
table implementation
*/
В iOS 7 view
UISearchDisplayController
(серый) не охватывал основной вид, а resultTable
не перезагружал данные, даже смог фильтровать строку поиска. (Мне пришлось использовать KVO для его отображения)
В iOS 6 серая вещь покрывает весь экран, и клавиатура не отображается (она сразу исчезла).
Может ли кто-нибудь помочь? Спасибо.