在TableView中使用UISearchController

时间:2015-11-03 14:45:00

标签: ios uitableview uisearchcontroller

我正在尝试在 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子句。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您必须将UITableView的委托和数据源设置为self。

尝试:

- (void)viewDidLoad {
[self.tableView setDelegate:self];
[self.tableView setDataSource:self];
// do then whatever else
}