UITableView
也会显示分隔符。但是当我使用viewForFooterInSection
时,分隔符就消失了。我希望它继续出现。我该怎么办?
当我在其中添加页脚时,这是我的代码:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 3;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"s"];
cell.textLabel.text = [NSString stringWithFormat:@"%d", indexPath.row + 1];
cell.textLabel.textAlignment = NSTextAlignmentCenter;
return cell;
}
// -------------------------- footer code start here --------------------------
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return 40;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
UIView *view = [[UIView alloc] initWithFrame:CGRectZero];
view.backgroundColor = [UIColor grayColor];
UILabel *title = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 40)];
title.text = @"footer here";
title.textAlignment = NSTextAlignmentCenter;
title.textColor = [UIColor whiteColor];
[view addSubview:title];
return view;
}
答案 0 :(得分:0)
这个github项目可能会给你一些建议: CLTableWithFooterViewController 当然,如果您希望页脚始终显示在屏幕上,即使有很多单元格,也需要进行一些更改。
答案 1 :(得分:0)
删除- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
和- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
使用此代码保持页脚向下(但始终可见)并保留分隔符:
@implementation tableView {
__weak UIView *_staticView;
}
- (void)viewDidLoad {
UIView *staticView = [[UIView alloc] initWithFrame:CGRectMake(0, self.tableView.bounds.size.height-50, self.tableView.bounds.size.width, 50)];
staticView.backgroundColor = [UIColor redColor];
//add other code for UILabel here
[self.tableView addSubview:staticView];
_staticView = staticView;
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 50, 0);
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
_staticView.transform = CGAffineTransformMakeTranslation(0, scrollView.contentOffset.y);
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
// this is needed to prevent cells from being displayed above our static view
[self.tableView bringSubviewToFront:_staticView];
}
答案 2 :(得分:0)
我猜你只有一个部分,对吗?在使用viewForFooterInSection之前,它只是向下填充空白单元格。但是当你调用viewForFooterInSection时,tableview会在该部分的末尾放置一个页脚。由于你没有第二部分,它会停止绘制任何单元格。所以你可以制作一个空白的第二部分,它会将空白单元格填充到第二部分。