如何获取分组表视图的标题视图?

时间:2012-05-27 11:40:01

标签: ios objective-c uitableview uikit

我希望获得分组表格视图的所有视图,以更改标签颜色并设置背景颜色。

3 个答案:

答案 0 :(得分:2)

我找到了答案,无法获得表格视图部分的标题视图。但是您可以实现委托tableView:viewForHeaderInSection:来重新创建标题视图和标签。以下代码将为您提供相同的标题视图和确切的标签。

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

    NSString *sectionTitle = [self tableView:tableView titleForHeaderInSection:section];

    if (sectionTitle == nil) {
        return nil;
    }

    // Create label with section title
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20.0f, 5.5f, 300.0f, 30.0f)];
    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:16.5];
    label.shadowColor = [UIColor whiteColor];
    label.shadowOffset = CGSizeMake(0.0, 1.0);
    label.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth;
    label.text = sectionTitle;

    // Create header view and add label as a subview
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.view.frame.size.width, 44.0f)];
    view.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth;
    [view addSubview:label];

    return view;
}

答案 1 :(得分:0)

你很好,你找到了解决方案。

一些建议:

  1. 不要对CGRect硬编码框架的宽度,而是使用self.view.size.width作为宽度(例如,如果你是横向的,或者Apple曾经介绍过一个不同的iPhone屏幕尺寸);

  2. 您可能希望对标签和包含标签的视图使用autoresizingMask,以便在屏幕方向更改时调整大小,或确保调用[self.tableview reloadData]方向变化;以及

  3. 这显然是一个单行标签...如果这对您有用,否则您需要使用sizeWithFont:constrainedToSize:lineBreakMode来确定高度,无论是创建标签/视图还是回复tableView:heightForHeaderInSection:

答案 2 :(得分:0)

您还需要添加textColor:

 label.textColor = [UIColor colorWithRed:0.265 green:0.294 blue:0.367 alpha:1.000];