Innym sposobem, aby to zrobić, byłaby odpowiedź na UITableViewDelegate
metodę willDisplayHeaderView
. Przekazany widok jest w rzeczywistości instancją pliku UITableViewHeaderFooterView
.
Poniższy przykład zmienia czcionkę, a także wyśrodkowuje tekst tytułu w komórce w pionie i poziomie. Zwróć uwagę, że powinieneś również zareagować, aby heightForHeaderInSection
wszelkie zmiany wysokości nagłówka zostały uwzględnione w układzie widoku tabeli. (Oznacza to, że jeśli zdecydujesz się zmienić wysokość nagłówka w tej willDisplayHeaderView
metodzie).
Następnie możesz odpowiedzieć na titleForHeaderInSection
metodę ponownego użycia tego skonfigurowanego nagłówka z różnymi tytułami sekcji.
Cel 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
(Uwaga: jeśli kontroler widoku jest potomkiem a UITableViewController
, należałoby to zadeklarować jako 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
Ten kod zapewnia również, że aplikacja nie ulegnie awarii, jeśli widok nagłówka jest inny niż 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
}