(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
のようなiOS7スタイルで(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
を実装する方法は?
追伸ヘッダーのUITableView
のタイトルの色を変更して、スタイルを保存するだけです。
ヘッダーとフッターの両方のグローバルカラーを変更する必要がある場合は、appearance
を使用します。
[[UILabel appearanceWhenContainedIn:[UITableViewHeaderFooterView class], nil] setTextColor:[UIColor redColor]];
View Controllerのライフサイクルの初期(例:-viewDidLoad
)、クラスを登録します。
[[self tableView] registerClass:[UITableViewHeaderFooterView class] forHeaderFooterViewReuseIdentifier:@"headerFooterReuseIdentifier"];
次に、メソッドで:(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
セルを両端キューし、好きなようにスタイルを設定して返します。
UIColor *titleColor = ... // Your color here.
UITableViewHeaderFooterView *headerFoorterView = [[self tableView] dequeueReusableHeaderFooterViewWithIdentifier:@"headerFooterReuseIdentifier"];
[[headerFooterView textLabel] setTextColor:titleColor];
return headerFooterView;
そして、それがデフォルトの実装を使用する方法です。
完璧ではありませんが解決策:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UILabel *label = [[UILabel alloc] init];
label.textColor = [UIColor whiteColor];
label.backgroundColor = [UIColor clearColor];
if (<is_iOS7>) {
label.text = [[NSString stringWithFormat:@" %@", <title>] uppercaseString];
} else {
if (<is_iPad>) {
label.text = [NSString stringWithFormat:@" %@", <title>];
} else {
label.text = [NSString stringWithFormat:@" %@", <title>];
}
}
return label;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 38.f;
}
また、@ aumansoftwareの答えは、ボタンなどの標準ヘッダーにコンテンツを追加する最良の方法でもあります。 Swiftの例を次に示します。
override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if (view.isKindOfClass(UITableViewHeaderFooterView)) {
let headerView = view as UITableViewHeaderFooterView
// Label
headerView.textLabel.textColor = UIColor.blueColor()
// New Button
let addPeopleButton: UIButton = UIButton.buttonWithType(.ContactAdd) as UIButton
addPeopleButton.addTarget(self, action: "showPeoplePicker:", forControlEvents: UIControlEvents.TouchUpInside)
addPeopleButton.setTranslatesAutoresizingMaskIntoConstraints(false)
headerView.addSubview(addPeopleButton)
let right: NSLayoutConstraint = NSLayoutConstraint(item: addPeopleButton, attribute: NSLayoutAttribute.Right, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Right, multiplier: 1.0, constant: -12)
let vertical: NSLayoutConstraint = NSLayoutConstraint(item: addPeopleButton, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.CenterY, multiplier: 1.0, constant: 0)
headerView.addConstraints([right, vertical])
}
}
IOS 6とまったく同じように機能します。ビュー(またはヘッダー全体をカバーするラベル)を作成し、要件に従ってスタイルを設定します。