1

我已将此代码添加到我的 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;
}
4

2 回答 2

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 更改为您想要的任何设置,但关键的关键信息是,如果您创建自己的视图,则必须自己创建标签并填写文本。

于 2012-04-16T03:05:49.907 回答
1

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

于 2012-04-16T00:57:53.430 回答