无法访问UISearchBar方法

时间:2014-06-26 09:36:44

标签: objective-c xcode tableview uisearchbar

我正在尝试在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或其他方法(你显然需要搜索)的方法都不起作用,我不明白为什么,请帮助我!

1 个答案:

答案 0 :(得分:0)

  1. 如果您不使用故事板/笔尖,则不需要在属性声明中使用IBOutlet关键字
  2. 您不能将自己指定为UISearchBar的代表,因此代理方法不会被称为
  3. -(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)UISearchDisplayDelegate协议的一种方法,但您没有提到您正在使用UISearchDisplayController。没有它,永远不会调用这个委托方法。您需要为没有显示控制器的UISearchBar实施的代理是UISearchBarDelegate