TableView Footer正在滚动表格

时间:2011-05-08 18:27:27

标签: iphone objective-c uitableview

我刚刚在tableView的页脚中实现了“加载更多”按钮,但页脚始终与表格一起滚动。我的tableView的样式是UITableViewStylePlain。

请你能告诉我哪里出错了。

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    UIView *footerView = nil;
    if(footerView == nil) {
        footerView  = [[[UIView alloc] init] autorelease];
        footerView.backgroundColor = [UIColor clearColor];
        UIButton *button = [[UIButton alloc] init];    
        button.layer.cornerRadius = 7;
        [button setFrame:CGRectMake(10, 3, 300, 44)];
        [button setTitle:@"Load 20 more" forState:UIControlStateNormal];
        [button.titleLabel setFont:[UIFont boldSystemFontOfSize:20]];
        [button setBackgroundColor:[UIColor whiteColor]];
        [button.titleLabel setTextColor:[UIColor blackColor]];
        [button addTarget:self action:@selector(load20More) forControlEvents:UIControlEventTouchUpInside];
        [footerView addSubview:button];
        [button release];
    }
    if ([songInfo count] > 20 && count < 100) {
        return footerView;
    }
    else
        return nil;
}

2 个答案:

答案 0 :(得分:24)

首先,tableView:viewForFooterInSection没有为表定义页脚,它为表中的部分定义了页脚。您可以在一个表中包含多个部分页脚。如果您的表只是一个部分,使用此方法将在功能上等同于添加表页脚,但它不应该是表的页脚。如果这是您想要的,那么使用实际的表页脚会更好一些,只需将视图分配给UITableView的{​​{1}}属性即可实现。

但是,表格页脚(部分页脚和表格页脚)都可以与您的表格一起滚动。如果您希望实现一个粘贴在屏幕底部并且不会随桌面滚动的“页脚”,那么最好的办法是调整tableFooterView小尺寸,为“页脚”腾出空间,然后添加一个新的视图,坐在你刚刚清除它的地方。这样,它就会固定到位,表格中的可滚动区域不会与“页脚”重叠。

答案 1 :(得分:0)

在这里,如果您使用表视图的内置委托方法,
tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView?
它会固定显示在视图底部,并且与表格视图的高度无关。即使您设置了tableView.tableFooterView?.isUserInteractionEnabled = true,它也无法按您希望的那样工作。因此,作为解决方案,您必须在viewDidLoad()上设置表尾视图(因为在此方法中设置了委托和数据源)。
let cell = tableView.dequeueReusableCell(withIdentifier: "MyFinanceTableViewFooterCell") as! MyFinanceTableViewFooterCell tableView.tableFooterView = cell
这将如您所愿。