これを行う別の方法は、UITableViewDelegate
メソッドに応答することwillDisplayHeaderView
です。渡されたビューは、実際には のインスタンスですUITableViewHeaderFooterView
。
次の例では、フォントを変更し、タイトル テキストをセル内で垂直方向および水平方向の中央に配置しています。heightForHeaderInSection
テーブル ビューのレイアウトで考慮されるヘッダーの高さの変更にも対応する必要があることに注意してください。(つまり、このwillDisplayHeaderView
メソッドでヘッダーの高さを変更することにした場合)。
次に、メソッドに応答して、titleForHeaderInSection
この構成済みヘッダーを別のセクション タイトルで再利用できます。
Objective-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;
}
スイフト 1.2
(注: ビュー コントローラが の子孫であるUITableViewController
場合、これは として宣言する必要があります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
}
スイフト3.0
このコードは、ヘッダー ビューが 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.bounds
header.textLabel?.textAlignment = .center
}