为什么UITableView sectionFooterView浮动在屏幕的底部,而不是附加到部分组的底部?

时间:2017-11-09 08:18:26

标签: ios objective-c uitableview

当我使用XCode9.1构建应用程序时遇到了这样一个奇怪的问题。 我试图在模拟器(iOS 11和iOS 10)中运行,但结果是一样的。 enter image description here

这是一些代码。

- (void)viewDidLoad {
[super viewDidLoad];

UITableView *mainTableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
mainTableView.dataSource = self;
mainTableView.delegate = self;
mainTableView.rowHeight = 52.f;
[mainTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];
[self.view addSubview:mainTableView];
UIView *headerView = [[UIView alloc] init];
headerView.backgroundColor = [UIColor orangeColor];
headerView.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.frame), 270);
mainTableView.tableHeaderView = headerView;

}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return 15.f;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 15.f;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
NSString *text = [NSString stringWithFormat:@"Header section==%ld",section];
return [self createViewWithTitle:text];
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
NSString *text = [NSString stringWithFormat:@"Footer section==%ld",section];
return [self createViewWithTitle:text];
}
- (UIView *)createViewWithTitle:(NSString *)title {
UIView *view = [UIView new];
view.backgroundColor = [UIColor yellowColor];
UILabel *label = [[UILabel alloc] init];
label.frame = CGRectMake(0, 0, 200, 15);
label.text = title;
[view addSubview:label];
return view;
}

2 个答案:

答案 0 :(得分:0)

按照预期正常工作,headerfooter section views在您在相应部分内滚动时会附加到table view的顶部和底部。

答案 1 :(得分:0)

如果您将页脚保留为部分页脚。然后它将按照你提到的方式表现,这不是一个错误。如果您希望页脚附加在屏幕底部,您可以使用tableview的tableFooterView属性并将其指定为页脚视图。

[self.tableView registerNib:[UINib nibWithNibName:@"FooterView" bundle:nil] forHeaderFooterViewReuseIdentifier:@"FooterView"];
FooterView *footerView = [[[NSBundle mainBundle] loadNibNamed:@"FooterView" owner:self options:nil] firstObject];
footerView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);

// Assigning the footer view to table footer view property
self.infoTableView.tableFooterView = footerView;