Я хотел бы задать более конкретный вопрос этому.
Я реализовал пользовательский UISearchBar
и, следовательно, пользовательский UISearchController
, так как это казалось единственным решением, чтобы панель поиска не отображала кнопку «Отмена». Это действительно решило упомянутую проблему, но создало новую. По какой-то причине метод делегата updateSearchResultsForSearchController:
(из viewController
, где я реализовал searchController
) больше не вызывается (он вызывается при первом нажатии на панель поиска, но не при вводе строки поиска), в то время как это происходит со стандартными UISearchController
и UISearchBar
. В результате таблица результатов поиска не отображается вообще.
Вот мой код для SearchBar.h
@interface SearchBar : UISearchBar
@end
и SearchBar.m
#import "SearchBar.h"
@implementation SearchBar
- (void)setShowsCancelButton:(BOOL)showsCancelButton {
// Do nothing...
}
- (void)setShowsCancelButton:(BOOL)showsCancelButton animated:(BOOL)animated {
// Do nothing....
}
@end
а также SearchController.h
@interface SearchController : UISearchController
@end
и SearchController.m
#import "SearchController.h"
#import "SearchBar.h"
@interface SearchController () {
SearchBar *_searchBar;
}
@end
@implementation SearchController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (SearchBar *)searchBar {
if (_searchBar == nil) {
_searchBar = [[SearchBar alloc] initWithFrame:CGRectZero];
}
return _searchBar;
}
@end
В MyViewController.h я подписываюсь на следующие протоколы:
@interface MyViewController : UIViewController <UISearchBarDelegate, UISearchControllerDelegate, UISearchResultsUpdating>
Кто-нибудь может увидеть, что я мог пропустить? Заранее спасибо.
textDidChange:
searchBar. - person pbasdf   schedule 07.07.2015UISearchBar
? - person Rafael Bugajewski   schedule 09.07.2015self.searchController.active = YES
сделала это за меня. Однако, в отличие от вашего связанного ответа, я установилMyViewController
какsearchBar.delegate
, поскольку мне также требовалась другая производительность делегата в моем контроллере представления. - person artooras   schedule 13.07.2015