tableView:viewForHeaderInSection:No-Header Value?

时间:2013-07-22 13:43:45

标签: iphone ios header tableview

在我的tableview中,只有在搜索框中输入内容时才需要标题。普通视图中没有标题。如果我不需要标题,我该怎么回事?

- (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;
}

1 个答案:

答案 0 :(得分:0)

它的

if(tableView==ExpTableView)

这打破了它。你假设它总是存在,但不是在你搜索的时候。在搜索时,它永远不会进入那个区块

你应该有两个ifs。一个是一个,一个检查表是否是搜索视图

类似的东西:

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;
    }
}