为什么我的UISearchDisplayController不使用我的自定义tableViewCell?

时间:2012-07-23 13:23:45

标签: ipad uitableview uisearchbar custom-cell uisearchbardisplaycontrol

我有一个使用分割视图控制器的iPad应用程序。在主视图中,我有一个使用故事板中定义的自定义表格单元格显示的项目列表。

单元格显示预期完成,并在Xcode中选择了深色背景。

我使用的是UISearchBarUISearchDisplayController

当我开始搜索时,列表会变为标准的白色表格单元格。

如何让SearchDisplayController使用我的自定义单元格?

当我在搜索字段中输入内容时,回调会更新过滤结果列表:

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller
                         shouldReloadTableForSearchString:(NSString *)searchString
{
    [self filterAvailableChannelsForSearchText:searchString scope:[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
    [self.searchDisplayController.searchBar selectedScopeButtonIndex]]];

    return YES;
}

我的表视图处理使用它来显示完整列表或筛选列表。 CellIdentifier匹配单元格的故事板中的标识符:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (tableView == self.searchDisplayController.searchResultsTableView)
        return [self.filteredAvailableChannel count];
    else
        return [[self availableChannelList] count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"AvailableChannelCell";
    FVAvailableChannelCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    // Configure the cell...
    FVChannel *channel = nil;
    int row = [indexPath row];
    if (tableView == self.searchDisplayController.searchResultsTableView)
        channel = [self.filteredAvailableChannel objectAtIndex:row];
    else
        channel = [[self availableChannelList] objectAtIndex:row];

    cell.idLabel.text = channel.channelID;
    cell.nameLabel.text = channel.channelName;
    cell.unitLabel.text = channel.unitName;

    return cell;
}

为什么我的searchDisplayController不能使用我的自定义单元格?

更新31Jul12

经过双重和三重检查所有故事板连接(看起来是正确的)后,我注意到了一些事情......

我可以看到我实际上获得自定义单元格 - 它只是像标准单元格一样 LOOKS

在我修复tableView:heightForRowAtIndexPath:后,我注意到了一些事情。当我选择一个单元格时,我可以看到自定义单元格在那里,但由于它似乎忽略了我的自定义单元格的背景颜色,我将自定义白色文本放在标准白色背景之上,使其看起来像一个空单元格。

自定义单元格类中initWithStyle:reuseIdentifier:中的断点永远不会受到影响,所以有些东西不对。

任何指示:

  1. 我在SearchResultsController中的单元格上获取自定义背景颜色时缺少什么?
  2. 为什么我的自定义单元格的initWithStyle没有被命中?它被设置为故事板中单元格的类。

1 个答案:

答案 0 :(得分:-1)

Apple开发者论坛上的反馈以及以下帖子都很有帮助:

How to customize the background color of a UITableViewCell?

简而言之,覆盖tableView:willDisplayCell:,您可以适当地设置背景颜色。