我创建了一个Search方法,用于搜索tableview的内容。这很好用,每次我在搜索栏中写入时,它都会将对象添加到名为filteredArray的数组中,并显示等于filteredArray.count的tableviewcells的数量。我用NSLog(@“%@”,filteredArray)测试了这个;
问题是我想在你搜索时在tableview中显示filteredArray。我为此改变了cellForRowAtIndexPath方法,但它只给了我空的tableviewcells。我做错了什么?
不搜索:
搜索“ru”:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
LanguageCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
cell = [[LanguageCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
if (tableView == self.tableViewData) {
cell.patternLabel.text = [NSString stringWithFormat:@"%@", [[rows objectAtIndex:indexPath.row]objectAtIndex:0]];
} else{
cell.patternLabel.text = [NSString stringWithFormat:@"%@", [filteredArray objectAtIndex:indexPath.row]];
}
return cell;
}
搜索方法:
-(void) searchThroughdata {
self.filteredArray = nil;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains [c] %@",self.searchBar.text];
self.filteredArray = [[finalArray filteredArrayUsingPredicate:predicate] mutableCopy];
NSLog(@"%@", filteredArray);
}
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
[self searchThroughdata];
}
答案 0 :(得分:1)
添加新角色后可以制作[yourTableView reloadData]
答案 1 :(得分:0)
你有2个表格视图,单元格注册了一个而不是另一个 - 这是原型单元格在故事板中定义时的工作方式,我想你已经完成了。
如果搜索表视图未显示已出列的单元格,则您使用initWithStyle:reuseIdentifier:
创建一个但不会创建patternLabel
。所以,你没有崩溃,因为你返回一个单元格,但是单元格是空的,因为标签不存在。
您最好的选择: