自定义 UISearchBar 结果单元格
Posted
技术标签:
【中文标题】自定义 UISearchBar 结果单元格【英文标题】:Customize UISearchBar Results Cell 【发布时间】:2014-03-17 11:41:14 【问题描述】:我正在尝试显示自定义 UISearchBar
结果单元格。我创建了一个自定义 UITableViewCell
来显示信息,但我想自定义 UISearchBar
结果。
我的课堂上有这段代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"PodsCell";
LinhaPod *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
cell = [[LinhaPod alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
if (isSearching && [self.searchResults count])
NSString *texto = [self.searchResults objectAtIndex:indexPath.row];
NSArray *arrTexto = [texto componentsSeparatedByString:@"#"];
cell.titulo.text = arrTexto[6];
cell.dataPod.text = [NSString stringWithFormat:@"%@ - %@", arrTexto[1], [arrTexto[3] stringByReplacingOccurrencesOfString:@"." withString:@"'"]];
[cell setAccessoryType: UITableViewCellAccessoryDisclosureIndicator];
return cell;
此代码不起作用。我用"cell.textLabel.text = @"test";"
进行了测试并工作了。
我正在使用搜索栏和搜索显示控制器。
这是我的UITableViewCell
【问题讨论】:
【参考方案1】:您是否已将 UILabel 添加到您的 UITableViewCell 中?你在 LinhaPod.m 中的 initWithStyle 应该看起来像下面的这个 sn-p。 (假设您没有为此自定义单元格使用 xib 文件)
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self)
_dataPod = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 160, 44)];
[self addSubview:_dataPod];
_titulo = [[UILabel alloc]initWithFrame:CGRectMake(160, 0, 160, 44)];
[self addSubview:_titulo];
return self;
当然,在你的 LinhaPod.h 中你也会有
@interface LinhaPod : UITableViewCell
@property(nonatomic) UILabel *titulo;
@property(nonatomic) UILabel *dataPod;
【讨论】:
是...1 个图像和 2 个标签...我没有使用 xib 文件,并且在 LinhaPod.m 中没有任何内容(默认代码)...我在 LinhaPod 中只有变量.h 那么你应该将它们添加到你的视图中,在initWithStyle方法的一个好地方添加它们。您可以更改框架以将元素放置在您喜欢的任何位置。 我想补充一点,如果您为单元格使用自定义 nib 文件,则在调用 cellForRowAtIndexPath 方法之前,您需要在 viewDidLoad 方法中注册 nib 文件,否则您将不会无法使用您的自定义单元格。【参考方案2】:- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView
[tableView registerClass:[MCSelectCategoryTableViewCell_iPhone class] forCellReuseIdentifier:@"selectCategoryCell"];
如果您想在 searchDisplayController 的 tableView 中使用自定义单元格,您可以通过在 searchDisplayController.searchDisplayTableView 中像这样注册来注册 StoryBoard 的任何 UITableView 子类。
【讨论】:
以上是关于自定义 UISearchBar 结果单元格的主要内容,如果未能解决你的问题,请参考以下文章