1

我正在构建一个从 SQLite 数据库加载数据的 iPhone 应用程序。到目前为止,我已经设法处理了它,但是现在我需要在顶部添加一个搜索栏来动态搜索数据库内容并获得正确的搜索结果。

我正在使用 Xcode 4.3.3 ,我是 Xcoding 的新手。

我已经看过几乎所有在线发布的教程,我需要一些帮助。

有人有任何非常具体的教程或示例代码可以提供帮助吗?将不胜感激。

4

3 回答 3

3

每个人,这是有史以来最有用的链接

http://code-ninja.org/blog/2012/01/08/ios-quick-tip-filtering-a-uitableview-with-a-search-bar/

于 2012-07-17T06:56:38.277 回答
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 方法为其分配一个谓词。

于 2012-07-16T14:02:11.300 回答
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];
}
于 2012-07-16T15:34:16.150 回答