iosuitableviewcocoa-touch

UITableView - change section header color


How can I change color of a section header in UITableView?

EDIT: The answer provided by DJ-S should be considered for iOS 6 and above. The accepted answer is out of date.


Solution

  • Hopefully this method from the UITableViewDelegate protocol will get you started:

    Objective-C:

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

    Swift:

    func tableView(_ tableView: UITableView!, viewForHeaderInSection section: Int) -> UIView!
    {
      let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.bounds.size.width, height: 30))
      if (section == integerRepresentingYourSectionOfInterest) {
        headerView.backgroundColor = UIColor.redColor()
      } else {
        headerView.backgroundColor = UIColor.clearColor()
      }
      return headerView
    }
    

    Updated 2017:

    Swift 3:

    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
        {
            let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.bounds.size.width, height: 30))
            if (section == integerRepresentingYourSectionOfInterest) {
                headerView.backgroundColor = UIColor.red
            } else {
                headerView.backgroundColor = UIColor.clear
            }
            return headerView
        }
    

    Replace [UIColor redColor] with whichever UIColor you would like. You may also wish to adjust the dimensions of headerView.