Iphone 如何在UITableView中为自定义单元格使用UISearchBar

Iphone 如何在UITableView中为自定义单元格使用UISearchBar,iphone,objective-c,xcode,uitableview,uisearchbar,Iphone,Objective C,Xcode,Uitableview,Uisearchbar,我正在从数组填充我的tableview。这个数组是通过SQLite查询创建的。 因此,在我的数组中,有来自用户定义类的对象。 我在表格中使用自定义单元格。与一层中的object.name类似,此层附近的object.id。 到目前为止一切都很好。但如果我尝试使用UISearchBar,我将如何重新填充我的表 这是我创建表的代码 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSInde

我正在从数组填充我的tableview。这个数组是通过SQLite查询创建的。
因此,在我的数组中,有来自用户定义类的对象。
我在表格中使用自定义单元格。与一层中的
object.name
类似,此层附近的
object.id
。 到目前为止一切都很好。但如果我尝试使用UISearchBar,我将如何重新填充我的表

这是我创建表的代码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"SpeakersCell";

    SpeakersCell *cell = (SpeakersCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"SpeakersCell" owner:self options:nil];

        for (id currentObject in topLevelObjects) {
            if ([currentObject isKindOfClass:[SpeakersCell class]]) {
                cell = (SpeakersCell *) currentObject;
                break;
            }
        }
    }

    // Set up the cell
    ProjectAppDelegate *appDelegate = (ProjectAppDelegate *)[[UIApplication sharedApplication] delegate];
    Speaker *speakerObject = (Speaker *)[appDelegate.speakers objectAtIndex:indexPath.row];

    cell.lblSpeakerName.text = speaker.speakerName;
    cell.lblSpeakerCity.text = speaker.speakerCity;
    return cell;
}
当我添加搜索栏并定义
searchBar textdichange
事件时,我成功地获取了包含关键字母的项目。但是我无法重新填充我的表,因为我只搜索了项目的名称

我从中获得帮助的教程是基于默认单元格构建的,tableview的数据源是NSString数组。但我的数组是NSObject数组,这是我的问题


我考虑获取搜索项目的索引,但我也可以如何使用这些值?你有什么想法或相关链接吗?

我想你应该看看Bobgreen的博客,他的教程对我帮助很大

为UISearchDisplayController检查他的delegate函数(我猜您可能想使用它?)


他有一个NSObject(
产品
)数组,他在其中循环。每次结果与搜索字符串匹配时,他都会将该值放入另一个名为
filteredListContent
的数组中,并向upp显示过滤后的内容。它对我来说很有魅力。

我意识到使用UISearchDisplayController更容易,但我找不到一个直接的教程。我将尝试一下,并在这里告知结果。非常感谢。出于某种原因,我选择了另一种方式,但再次感谢你的回答。我最好在我的个人主页上写一篇文章,因为这需要花很多时间来理解和收集。然后我可以通过编辑我的文章来分享链接。如果你自己需要的话,我当然可以寄给你。不,我不需要,但是如果知道你是如何解决的,那就太好了。您知道,对于将来的引用,以及其他可能在堆栈溢出上有相同问题的人,这里是2013年。你的文章写完了吗?邮局在哪里?
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
   [self.filteredListContent removeAllObjects];
    for (Product *product in listContent)
  {
    if ([scope isEqualToString:@"All"] || [product.type isEqualToString:scope])
     {
        NSComparisonResult result = [product.name compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
        if (result == NSOrderedSame)
        {
         [self.filteredListContent addObject:product];
         }
      }
   }
}