实际上我在表格视图中存储了太多数据,现在我想轻松找到我的数据,所以我需要一个搜索栏。任何人都可以给我一点解决方案吗?
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [array count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifire = @"CellIdentifire";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifire];
}
cell.textLabel.text = [array objectAtIndex:indexPath.row];
return cell;
}
答案 0 :(得分:1)
请按照以下步骤操作:
使用以下代码进行搜索:
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
[searchBar setShowsCancelButton:YES];
}
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
//Remove all objects first.
[self searchTerm:searchText];
}
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
NSLog(@"Cancel clicked");
searchBar.text = @"";
[searchBar resignFirstResponder];
[searchBar setShowsCancelButton:NO];
[self showAllData];// to show all data
}
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
NSLog(@"Search Clicked");
[searchBar setShowsCancelButton:NO];
[searchBar resignFirstResponder];
[self searchTerm:searchBar.text];
}
-(void)showAllData {
//load all data in _tableViewDataSourceArray, and reload table
}
-(void)searchTerm : (NSString*)searchText
{
if (searchText == nil) return;
_tableViewDataSourceArray = //YOUR SEARCH LOGIC
[self.tableView reloadData];
}
修改强> 如果您想用代码创建搜索栏,请初始化搜索栏并将其作为表格视图的标题视图传递到内部
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
不要忘记在
中返回视图高度- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section