viewForHeaderInSection的一些坑
2018-05-23 本文已影响0人
哈利波特会魔法
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
NSArray *titles = @[@"个人信息设置", @"账户安全设置"];
if (section == 0) {
return titles[0];
} else {
return titles[1];
}
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *view = [[UIView alloc] init];
view.frame = CGRectMake(0, 0, SCREEN_WIDTH, 100);
view.backgroundColor = [UIColor redColor];
return view;
}
这2个方法同时设定,发现标题没有设置成功。
后来换了willDisplayHeaderView
,是正常的
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
NSArray *titles = @[@"个人信息设置", @"账户安全设置"];
if (section == 0) {
return titles[0];
} else {
return titles[1];
}
}
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
header.textLabel.textAlignment=NSTextAlignmentCenter;
header.contentView.backgroundColor = RGB(0xf8f8f8);
}
在使用 viewForHeaderInSection
时,标题的设置要在里面设置,如下:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *view = [[UIView alloc] init];
view.frame = CGRectMake(0, 0, SCREEN_WIDTH, 100);
view.backgroundColor = [UIColor redColor];
UILabel *label = [[UILabel alloc] init];
label.frame = CGRectMake(0, 0, view.frame.size.width, view.frame.size.height);
NSArray *titles = @[@"个人信息设置", @"账户安全设置"];
label.text = titles[section];
[view addSubview:label];
return view;
}
**
注意:willDisplayHeaderView
和 viewForHeaderInSection
,不能同时设置