我正在尝试使用搜索栏过滤TableView。 TableView有一个自定义原型单元,它有一个Imageview和一个标签,因此可以调用它。标签隐藏在图像下方。
我有两个数组,每个数组有94个项目。没有搜索任何东西时它工作正常。 tableview以完美的顺序显示图像/单元格。
当我搜索某些内容时,结果总是会返回适当数量的单元格。但是,图像本身不会被过滤。这意味着无论通过标签过滤哪些单元格,图像将始终相同。
这是我的UISearchBar代码的问题吗?
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
if (searchText.length == 0) {
isFiltered = NO;
} else {
isFiltered = YES;
filteredHeroes = [[NSMutableArray alloc]init];
for (NSString *str in totalHeroData) {
NSRange heroRange = [str rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (heroRange.location != NSNotFound) {
[filteredHeroes addObject:str];
}
} } [self.HeroTableView reloadData]; }
我很乐意提供任何其他资源。记住,我有两个94项阵列。如果我需要链接它们,我也想知道如何做到这一点。
谢谢。
编辑:这是Cellforrowatindexpath方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath {
static NSString *CellIdentifier = @"heroTableCell";
HeroTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[HeroTableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier: CellIdentifier];
}
// Configure the cell...
cell.textLabel.text = [self.heroNames objectAtIndex:indexPath.row];
cell.imageView.image = [UIImage imageNamed:[self.heroImages objectAtIndex:indexPath.row]];
return cell;
}
感谢您的询问 - 让我知道您的想法:) 我花了大约10个小时在网上搜索:S
答案 0 :(得分:0)
你应该使用一个nsmutuable数组并添加nsdictionary,其中包含一个关键的imagename和一个键名作为字符串
[filteredHeroes addObject:[NSDictionary dictionaryWithObjectsAndKeys:name,@“Name”,ImageName,@“Image”,nil]];
在cellForRowAtIndexPath中使用相同的filteredHeroes并使用键名称过滤相同的数组并重新加载TableData并完成。