我正在构建一个从SQLite数据库加载数据的iPhone应用程序。到目前为止,我已经设法应对它,但现在我需要在顶部添加一个搜索栏来动态搜索数据库内容并获得正确的搜索结果。
我正在使用Xcode 4.3.3,而且我是Xcoding中的新手。
我已经看到几乎所有在线发布的教程都需要一些帮助。
任何人都有任何非常具体的教程或示例代码可以提供帮助吗?我们将非常感激。
答案 0 :(得分:3)
每个人都是有史以来最有用的链接
http://code-ninja.org/blog/2012/01/08/ios-quick-tip-filtering-a-uitableview-with-a-search-bar/
答案 1 :(得分:0)
您可以使用NSPredicate。 http://developer.apple.com/library/ios/#DOCUMENTATION/Cocoa/Reference/Foundation/Classes/NSPredicate_Class/Reference/NSPredicate.html
[NSPredicate predicateWithFormat:@"whatYouAreSearching LIKE %@", searchBar.text];
如果您正在使用NSFetchRequest,则可以使用它的setPredicate方法为其分配谓词。
答案 2 :(得分:0)
您的控制器必须实现UISearchBarDelegate协议
然后在init方法中添加这个或类似的
CGRect searchBarRect = CGRectMake(0, 0, self.view.bounds.size.width, 44);
_searchBar = [[UISearchBar alloc] initWithFrame:searchBarRect];
_searchBar.delegate = self;
之后,实现这三种方法,我将发布一些看起来像我的实现的东西
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
[searchBar setShowsCancelButton:YES animated:YES];
self.tableView.allowsSelection = NO;
self.tableView.scrollEnabled = NO;
}
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
searchBar.text=@"";
[searchBar setShowsCancelButton:NO animated:YES];
[searchBar resignFirstResponder];
self.tableView.allowsSelection = YES;
self.tableView.scrollEnabled = YES;
}
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
[searchBar setShowsCancelButton:NO animated:YES];
[searchBar resignFirstResponder];
self.tableView.allowsSelection = YES;
self.tableView.scrollEnabled = YES;
/* fire method that does querying with searchBar.text as attribute */
[self some method:searchBar.text];
}