UITableview Section标题不显示文本

时间:2012-04-16 00:55:53

标签: iphone ios uitableview

我已将此代码添加到我的UITableViewController以返回灰色标题部分。

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)];
   [headerView setBackgroundColor:[UIColor grayColor]];
    return headerView;
}

然而现在这样做我看不到标题字符......我是否需要将其添加为子视图?还是有另一种做事方式?

我有这些方法将标题和标题文本添加到UITablView,但是当我使用上面的方法时,我再也看不到它们了。

// Section headers
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{    
    return [sectionLetterArray objectAtIndex:section];
}

// Section header titles
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    return sectionLetterArray;
}

2 个答案:

答案 0 :(得分:7)

如果您创建自己的tableView:viewForHeaderInSection,则必须创建UILabel或其他内容,并自行填写文本,例如:

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)];
    [headerView setBackgroundColor:[UIColor grayColor]];

    // Add the label
    UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectMake(kSectionTitleLeftMargin, 
                                                                     kSectionTitleTopMargin, 
                                                                     tableView.bounds.size.width - kSectionTitleLeftMargin - kSectionTitleRightMargin, 
                                                                     30.0 - kSectionTitleTopMargin - kSectionTitleBottomMargin)];

    // do whatever headerLabel configuration you want here

    headerLabel.text = [self tableView:tableView titleForHeaderInSection:section];
    [headerView addSubview:headerLabel];

    // Return the headerView
    return headerView;
}

显然,将headerLabel更改为您想要的设置,但关键的主要信息是,如果您创建自己的视图,则必须自己创建标签并填写文本。

答案 1 :(得分:1)

当您实现该方法时,带有标签的默认视图将替换为您返回的内容,因此您需要为其添加一个标签,其中包含您想要的任何文本。