我正在尝试在 tableviewcontroller 中使用搜索栏。但是,如果没有输入。
有代码。
-(void)updateSearchResultsForSearchController:(UISearchController *)searchController {
@try {
[_searchResults removeAllObjects];
NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:@"SELF.name CONTAINS[cm] %@",searchController.searchBar.text];
NSArray *array = [_customers filteredArrayUsingPredicate:searchPredicate];
_searchResults = [array mutableCopy];
[self.tableView reloadData];
}
@catch (NSException *exception) {
NSLog(@"Error: %@",exception);
}
有resultsearchController
@property (nonatomic,strong) UISearchController *resultSearchController;
numberofRowsinsection
方法。
if (![[self resultSearchController] isActive]) {
return _customers.count;
} else {
return _searchResults.count;
}
我也加入了Cellforindexpath方法。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
KartList *kart;
if (_resultSearchController.active) {
kart = [_searchResults objectAtIndex:indexPath.row];
cell.textLabel.text = kart.name;
cell.detailTextLabel.text = kart.tel1;
return cell;
} else {
kart = [_customers objectAtIndex:indexPath.row];
cell.textLabel.text = kart.name;
cell.detailTextLabel.text = kart.tel1;
return cell;
}
//Configure the cell...
}
它没有显示任何内容。所以我做错了。我看到它没有在numberOfRowsInSection中输入else子句。
感谢您的帮助。
答案 0 :(得分:0)
您必须将UITableView的委托和数据源设置为self。
尝试:
- (void)viewDidLoad {
[self.tableView setDelegate:self];
[self.tableView setDataSource:self];
// do then whatever else
}