首先,我想告诉我,我已经研究并尝试关注像UISearchDisplayController and custom cell这样的stackoverflow链接,但问题仍然存在
我将搜索栏和搜索显示控制器集成到我的UITableView中。搜索功能正常但搜索结果单元格具有默认的白色单元格设计,而不是用于UITableView的自定义单元格设计。下面是我的代码,使搜索结果的Cell设计适应我的自定义设计。
- (void)viewDidLoad
{
[super viewDidLoad];
[self.searchDisplayController.searchResultsTableView registerClass:[ItemCellTableViewCell class] forCellReuseIdentifier:@"Cell"];
if(!self.document){
[self initDocument];
}
self.filteredItemCatalogArray = [[NSMutableArray alloc]init];
self.itemCatalogTableView.dataSource = self;
self.itemCatalogTableView.delegate = self;
[self.itemCatalogTableView reloadData];
self.itemCatalogTableView.backgroundColor = [UIColor clearColor];
self.itemCatalogTableView.opaque = NO;
self.itemCatalogTableView.bounces = YES;
self.itemCatalogTableView.backgroundView = nil;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
if(tableView == self.searchDisplayController.searchResultsTableView)
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
//cell fields customization
cell.backgroundColor = [UIColor clearColor];
cell.opaque = NO;
return cell;
}
else
{
ItemCellTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
//cell fields customization
cell.backgroundColor = [UIColor clearColor];
cell.opaque = NO;
return cell;
}
}
我在这里缺少什么?
已编辑:
在搜索结果的if块中,我将tableview更改为self.tableview,并获取正确的自定义单元格。但它需要不正确的高度,因此搜索结果的行重叠
答案 0 :(得分:5)
在搜索结果的if块中,我将tableview更改为self.tableview,并获得正确的自定义单元格。但它需要不正确的高度,因此搜索结果的行重叠
纠正高度问题我在viewdidload中添加了以下行
self.searchDisplayController.searchResultsTableView.rowHeight = self.tableView.rowHeight;
答案 1 :(得分:1)
1)如果您的单元格正在使用xib文件,则应添加到viewDidLoad
(或在tableView委托之前调用的其他方法)
[yourTableView registerNib:[UINib nibWithtName:@"your_nibName" bunde:yourBunde] forCellReuseIdentifier:@"yourIdentifier"]
您还应该为自定义单元格使用注册标识符:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
static NSString *CustomCellIdentifier = @"yourIdentifier";
if(tableView == self.searchDisplayController.searchResultsTableView)
{
// UITableViewCell customization
return cell;
}
else
{
ItemCellTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CustomCellIdentifier forIndexPath:indexPath];
if (!cell)
cell = [[ItemCellTableViewCell alloc] initWithStyle:yourPreferedStyle reuseIdentifier:CustomCellIdentifier] // or other custom initialization
//put cell fields customization here
return cell;
}
}
答案 2 :(得分:0)
如果您的自定义单元格是使用NIB设计的,请尝试使用
[self.searchDisplayController.searchResultsTableView registerNib:[UINib nibWithNibName:@"YourCellNibName" bundle:Nil] forCellWithReuseIdentifier:@"Cell"];
答案 3 :(得分:0)
你必须获得tableView的引用然后才能进入
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CustomTableCell";
MyCell *cell = (MyCell *)[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
...
}