我有一个包含自定义单元格的UITableView。一切正常。但之后,我决定添加一个searchBar以便...搜索!
所以,我在我的xib文件中的UITableView下的“Object Library”中添加了“搜索栏和搜索显示控制器”。 p>
我为自定义单元格创建了一个特定的类:
“CustomCell.h”
@class CustomCell;
@interface CustomCell : UITableViewCell
{
}
@property (weak, nonatomic) IBOutlet UILabel *lblDate;
@property (weak, nonatomic) IBOutlet UILabel *lblAuteur;
@end
“CustomCell.m”
no interesting stuff
“CustomCell.xib”
“Event”类:
@interface Event : NSObject
{
}
@property (strong, nonatomic) NSString *desc;
@property (strong, nonatomic) NSString *dateCreation;
@end
包含 UITableView 和 UISearchBar 的视图:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"cell";
// Determinate the current event
Event *currentEvent;
if (tableView == self.searchDisplayController.searchResultsTableView)
currentEvent = [filteredArray objectAtIndex:indexPath.row];
else
currentEvent = [notFilteredArray objectAtIndex:indexPath.row];
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if(cell == nil)
cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
cell.lblAuteur.text = [currentEvenement desc];
cell.lblDate.text = [currentEvenement dateCreation];
return cell;
}
好的,现在我们可以解决我的问题。加载tableView后,自定义单元格显示良好。但是如果我使用 SearchBar :
为什么我这样做?非常感谢您的帮助......我确切地说 filteredArray 和 notFilteredArray 已正确填充(我多次检查过)。这意味着搜索机制运作良好。
答案 0 :(得分:7)
经过多次搜索" (双关语)我发现了这个问题。
当你使用原型单元格引用tableview时,你不能依赖传入的tableview,因为有时候tableview是没有原型单元格的搜索表视图。
所以不是......
HomeTabCell *cell = (HomeTabCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
替换" tableview"以上与原型单元格的表视图直接连接
HomeTabCell *cell = (HomeTabCell *)[self.HomeTableView dequeueReusableCellWithIdentifier:CellIdentifier];
希望这有帮助!
答案 1 :(得分:0)
检查这些设置,如果没有
self.searchDisplayController.searchResultsDelegate = self; self.searchDisplayController.searchResultsDataSource = self;
试试这个,
答案 2 :(得分:0)
对于寻求解决此问题的人感到抱歉... 我无法修复它,主承包商不再需要这个功能,所以我放弃了。