我正在尝试在iOS应用中为表格视图设置搜索栏。设置了表视图,搜索栏也是如此。我不能使用XIB / Storyboard文件 - 遗憾的是所有教程都包含其中一个......现在的问题是,我不能使用任何UISearchBar函数,例如textDidBeginEditing等等。
.h SearchBar的文件声明(我在.h文件中加载了UISearchDisplayDelegate)
@property (nonatomic,strong) UISearchBar IBOutlet *searchBar;
在.m文件的ViewDidLoad中初始化SearchSearchBar:
self.searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, 320, 44)];
[self.view addSubview:self.searchBar];
//DIsmiss Keyboard
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
dismissKeyboard方法缺失部分(正常):
- (void)dismissKeyboard{
//Keyboard Hiding
[_searchBar resignFirstResponder];
}
这是我在测试项目中使用的另外两种方法(用于搜索和重新加载视图),他们在那里工作:
-(void) filterContentForSearchText:(NSString *)searchText scope:(NSString *)scope {
NSLog(@"Search Clicked");
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@", searchText];
self.searchResults = [self.array filteredArrayUsingPredicate:predicate];
}
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)
searchString {
[self filterContentForSearchText:searchString scope:[[self.searchDisplayController.searchBar scopeButtonTitles]objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
return YES;
}
我真的很绝望,因为所有使用textEdit或其他方法(你显然需要搜索)的方法都不起作用,我不明白为什么,请帮助我!
答案 0 :(得分:0)
IBOutlet
关键字UISearchBar
的代表,因此代理方法不会被称为-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)
是UISearchDisplayDelegate
协议的一种方法,但您没有提到您正在使用UISearchDisplayController
。没有它,永远不会调用这个委托方法。您需要为没有显示控制器的UISearchBar
实施的代理是UISearchBarDelegate。