gpt4 book ai didi

ios - 在objective-c的 TableView 中显示搜索结果

转载 作者:行者123 更新时间:2023-12-01 18:09:51 26 4
gpt4 key购买 nike

  • 我在 View Controller 中创建了一个带有搜索栏的表格 View ,但表格 View 不显示搜索结果。
  • 这就是我的代码的工作方式。首先我创建一个数组来保存数据>>在表格 View 中显示数组数据>>使用搜索栏过滤表格 View 。

  • 这是我的代码:
    - (void)viewDidLoad {
    [super viewDidLoad];
    self.inventoryarray =[[NSArray alloc] initWithObjects: @"apple",@"samsung",@"HTC",@"LG",@"Sony",@"Motorola",@"Nexus",@"Asus" ,nil];
    self.searchresult =[[NSArray alloc]init];
    // Do any additional setup after loading the view, typically from a nib.
    }

    #pragma table View methods

    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (tableView == self.searchDisplayController.searchResultsTableView) {
    return [self.searchresult count];
    } else {
    return [self.inventoryarray count];
    }
    }

    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *simpleTableIdentifier = @"CellID";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

    if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    }

    if (tableView == self.searchDisplayController.searchResultsTableView) {
    cell.textLabel.text = [self.searchresult objectAtIndex:indexPath.row];
    } else {
    cell.textLabel.text = [self.inventoryarray objectAtIndex:indexPath.row];
    }
    return cell;
    }

    #pragma search methods

    -(void) filterContentForSearchText:(NSString *)searchText scope:(NSString *)scope
    {
    NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF contains[cd] %@", searchText];
    self.searchresult = [self.inventoryarray filteredArrayUsingPredicate:resultPredicate];
    }


    -(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
    [self filterContentForSearchText:searchString scope:[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]] ;
    return YES;
    }

    最佳答案

    你忘了refesh table 上的数据

     -(void) filterContentForSearchText:(NSString *)searchText scope:   (NSString *)scope
    {
    NSPredicate *resultPredicate = [NSPredicate
    predicateWithFormat:@"SELF contains[cd] %@",
    searchText];

    self.searchresult = [self.inventoryarray filteredArrayUsingPredicate:resultPredicate];

    // you forget to reload Data
    [self.searchDisplayController.searchResultsTableView reloadData];
    // else use

    [yourtableView reloadData];
    }

    建议: UISearchDisplayController已弃用,请使用 UISearchController之后,对于 tutorial

    关于ios - 在objective-c的 TableView 中显示搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33777124/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com