我有UITableView
和UISearchDisplayController
。 UITableViewCell是一个自定义单元格,其中 rowHeight = 30 :
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
UILabel *lbTitle;
if (!cell) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
[cell setSelectionStyle:UITableViewCellSelectionStyleGray];
lbTitle = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, tableView.rowHeight)];
[lbTitle setTag:1];
[lbTitle setFont:[UIFont fontWithName:@"Sinhala Sangam MN" size:14]];
//[lbTitle setTextAlignment: NSTextAlignmentCenter];
[cell addSubview:lbTitle];
}
else {
lbTitle = (UILabel *)[cell viewWithTag:1];
}
}
如何在UISearchDisplayController中应用此单元格样式。因为当搜索“活动”时,UISearchDisplayController的单元格看起来像是基本的。
由于
在MarkM的回答(Is there a way to customize UISearchDisplayController cell)的帮助下已解决:
static NSString *normalCellReuseIdentifier = @"ANormalCell";
static NSString *searchCellReuseIdentifier = @"ASearchCell";
UITableViewCell* cell = nil;
UILabel *lbTitle;
if (tableView != self.searchDisplayController.searchResultsTableView) {
cell = [tableView dequeueReusableCellWithIdentifier:normalCellReuseIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:normalCellReuseIdentifier];
[cell setSelectionStyle:UITableViewCellSelectionStyleGray];
lbTitle = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, tableView.rowHeight)];
[lbTitle setTag:1];
[lbTitle setFont:[UIFont fontWithName:@"Sinhala Sangam MN" size:14]];
//[lbTitle setTextAlignment: NSTextAlignmentCenter];
[cell addSubview:lbTitle];
}
else lbTitle = (UILabel *)[cell viewWithTag:1];
} else {
tableView.rowHeight = 30;
cell = [tableView dequeueReusableCellWithIdentifier:searchCellReuseIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:searchCellReuseIdentifier];
[cell setSelectionStyle:UITableViewCellSelectionStyleGray];
lbTitle = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, tableView.rowHeight)];
[lbTitle setTag:1];
[lbTitle setFont:[UIFont fontWithName:@"Sinhala Sangam MN" size:14]];
//[lbTitle setTextAlignment: NSTextAlignmentCenter];
[cell addSubview:lbTitle];
}
else lbTitle = (UILabel *)[cell viewWithTag:1];
}
答案 0 :(得分:0)
在UISearchDisplayController
的实例上(假设它名为myUISearchDisplayController),调用myUISearchDisplayController.searchResultsTableView.rowHeight = 30;
答案 1 :(得分:0)
当UISearchDisplayController
控制表格以显示结果时,它会调用
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
要显示单元格,所以您唯一需要做的就是检测displayController何时调用此方法:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
if ([tableView isMemberOfClass:[UITableView class]])
//This is the table view
else
//This is the display controller
对委托/数据源的其余方法执行相同操作,以根据需要实现搜索结果单元格(例如,高度或行数)
答案 2 :(得分:0)
搜索显示控制器有自己的表格,在其中显示正在搜索的数据。您可以使用此代码设置高度 -
SDC.searchResultsTableView.rowHeight = 30;//whatever you want
SDC是UISearchDisplayController
答案 3 :(得分:0)
使用searchResultsTableView调用所有相同的UITableView委托方法。有关更详细的说明,请参阅以下答案。
答案 4 :(得分:0)
如果行高是唯一要改变的。使用searchResultsTableView.rowHeight
进行设置仅适用于第一次。点击取消并使用新搜索键搜索会忽略自定义rowHeight。 (iOS 6.1,xcode 4.6.1)使用以下内容。
- (void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView {
tableView.rowHeight = 50.0;
}