0

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;
}
4

3 回答 3

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];
 }
于 2013-11-14T08:54:34.823 回答
0

这个 github 项目可能会给您一些建议: CLTableWithFooterViewController 如果您希望页脚始终显示在屏幕上,即使有很多单元格,当然也需要进行一些更改。

于 2013-11-14T08:53:08.643 回答
0

我猜你只有一个部分,对吧?在您使用 viewForFooterInSection 之前,它只会一直填充空白单元格。但是当您调用 viewForFooterInSection 时,tableview 会在该部分的末尾放置一个页脚。由于您没有第二部分,它会停止绘制任何单元格。所以您可以制作一个空白的第二部分,它将填充空白单元格到第二部分。

于 2013-11-14T09:12:34.977 回答