我在用户界面中添加了一个搜索栏。搜索栏已经设置好了,但是我无法弄清楚如何在UITableView中搜索内容。我是否可以删除不以搜索栏中输入的字符开头的项目?
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
if (searchBar.text.length < 1) {
return;
}
else {
// Do search stuff here
}}
此代码有效,调用else函数。但我不知道该怎么做。我不想为此创建一个全新的数组。
答案 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
数组而不是常规数组的数据。