使用UISearchBar搜索TableView

时间:2012-07-02 22:05:17

标签: objective-c xcode

我在用户界面中添加了一个搜索栏。搜索栏已经设置好了,但是我无法弄清楚如何在UITableView中搜索内容。我是否可以删除不以搜索栏中输入的字符开头的项目?

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
if (searchBar.text.length < 1) {
    return;
}
else {
    // Do search stuff here



}}

此代码有效,调用else函数。但我不知道该怎么做。我不想为此创建一个全新的数组。

1 个答案:

答案 0 :(得分:3)

我会帮你做得更好。此示例将搜索为用户类型。如果您的数据非常庞大,您可能希望在- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar中实现它,就像您最初计划的那样。不幸的是,你需要第二个数组,但在表格中很容易编码:

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
    if(searchText.length == 0)
    {
        isFiltered = FALSE;
    }
    else
    {

        isFiltered = true;
        if (filteredTableData == nil)
            filteredTableData = [[NSMutableArray alloc] init];
        else 
            [filteredTableData removeAllObjects];

        for (NSString* string in self.masterSiteList)
        {
            NSRange nameRange = [string rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)];
            if(nameRange.location != NSNotFound)
            {
                [filteredTableData addObject:string];
            }
        }
    }
    [self.tableView reloadData];
}

然后更新您的委托方法,以便在filteredTableData var设置为YES时显示isFiltered数组而不是常规数组的数据。