0

在我的表格视图中,仅当在搜索框中键入内容时才需要标题。并且在正常视图中没有标题。如果我不需要标题,我应该返回什么?

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *section1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 22)];

if(tableView==ExpTableView)
{
    [section1 setBackgroundColor:[UIColor colorWithRed:241.0f/255.0f green:57.0f/255.0f blue:130.0f/255.0f alpha:1.0f]];
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 3, tableView.bounds.size.width - 10, 18)];

    if (isSearchOn)
    {

        label.text = [NSString stringWithFormat:@"Search Results for '%@'", searchTextValue];
        label.textColor = [UIColor whiteColor];
        label.font = [UIFont boldSystemFontOfSize:16];
        label.backgroundColor = [UIColor clearColor];
        [section1 addSubview:label];

        return section1;

    }
    else
    {
        return nil;
    }
}

return nil;
}
4

1 回答 1

0

它的

if(tableView==ExpTableView)

这打破了它。您假设它总是如此,但在您搜索时并非如此。搜索时它永远不会进入那个块

你应该有两个如果。一个是检查表是否是searchview的一个和一个

就像是:

if(tableView == [[self searchDisplayController] searchResultsTableView])

所以从我对你想要做的事情的看法来看:

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{

    if(tableView == [[self searchDisplayController] searchResultsTableView]) {

        UIView *section1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 22)];
        [section1 setBackgroundColor:[UIColor colorWithRed:241.0f/255.0f green:57.0f/255.0f blue:130.0f/255.0f alpha:1.0f]];
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 3, tableView.bounds.size.width - 10, 18)];

        label.text = [NSString stringWithFormat:@"Search Results for '%@'", searchTextValue];
        label.textColor = [UIColor whiteColor];
        label.font = [UIFont boldSystemFontOfSize:16];
        label.backgroundColor = [UIColor clearColor];
        [section1 addSubview:label];

        return section1;
    }

    return nil;
}

此方法与您还需要更改的以下方法一起使用,以便获得您所追求的功能:

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    if(tableView == [[self searchDisplayController] searchResultsTableView])
        return /*DESIRED_HEIGHT_OF_HEADER*/;
    }else {
        return 0;
    }
}
于 2013-07-22T13:57:34.860 回答