Une autre façon de procéder serait de répondre à la UITableViewDelegate
méthode willDisplayHeaderView
. La vue transmise est en fait une instance d'un fichier UITableViewHeaderFooterView
.
L'exemple ci-dessous modifie la police et centre également le texte du titre verticalement et horizontalement dans la cellule. Notez que vous devez également répondre à heightForHeaderInSection
pour que toute modification de la hauteur de votre en-tête soit prise en compte dans la disposition de la vue tableau. (Autrement dit, si vous décidez de modifier la hauteur de l'en-tête dans cette willDisplayHeaderView
méthode.)
Vous pouvez alors répondre à la titleForHeaderInSection
méthode pour réutiliser cet en-tête configuré avec différents titres de section.
Objectif c
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section {
UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
header.textLabel.textColor = [UIColor redColor];
header.textLabel.font = [UIFont boldSystemFontOfSize:18];
CGRect headerFrame = header.frame;
header.textLabel.frame = headerFrame;
header.textLabel.textAlignment = NSTextAlignmentCenter;
}
Swift 1.2
(Remarque: si votre contrôleur de vue est un descendant de a UITableViewController
, cela devra être déclaré comme override func
.)
override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int)
{
let header:UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView
header.textLabel.textColor = UIColor.redColor()
header.textLabel.font = UIFont.boldSystemFontOfSize(18)
header.textLabel.frame = header.frame
header.textLabel.textAlignment = NSTextAlignment.Center
}
Swift 3.0
Ce code garantit également que l'application ne plante pas si votre vue d'en-tête est autre chose qu'un UITableViewHeaderFooterView:
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
guard let header = view as? UITableViewHeaderFooterView else { return }
header.textLabel?.textColor = UIColor.red
header.textLabel?.font = UIFont.boldSystemFont(ofSize: 18)
header.textLabel?.frame = header.frame
header.textLabel?.textAlignment = .center
}