如何添加页脚到UITableView?

我使用这段代码来添加页脚到TableView。 它有20个部分,每个部分几行。 有一个titleForHeaderInSection和sectionForSectionIndexTitle方法。

CGRect footerRect = CGRectMake(0, 0, 320, 40); UILabel *tableFooter = [[UILabel alloc] initWithFrame:footerRect]; tableFooter.textColor = [UIColor blueColor]; tableFooter.backgroundColor = [self.theTable backgroundColor]; tableFooter.opaque = YES; tableFooter.font = [UIFont boldSystemFontOfSize:15]; tableFooter.text = @"test"; self.theTable.tableFooterView = tableFooter; [tableFooter release]; 

我究竟做错了什么?

谢谢,

RL

我特意看到我的代码中

 self.theTable.tableFooterView = tableFooter; 

作品和

 [self.theTable.tableFooterView addSubview:tableFooter]; 

不起作用。 所以坚持前者,并寻找其他可能的错误。 HTH

你需要实现UITableViewDelegate方法

 - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section 

并返回所需的视图(例如,在页脚中使用您想要的文本的UILabel)以获取表格的相应部分。

我用它,它的工作完美:)

  UIView* footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 500)]; [footerView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"ProductCellBackground.png"]]]; self.tableView.tableFooterView = footerView; [self.tableView setSeparatorStyle:(UITableViewCellSeparatorStyleNone)]; [self.tableView setContentInset:(UIEdgeInsetsMake(0, 0, -500, 0))]; 

我知道这是一个相当古老的问题,但我刚刚遇到同样的问题。 我不知道为什么,但似乎tableFooterView只能是UIView的一个实例(不是“种”,但“是成员”)…所以在我的情况下,我创build了新的UIView对象(例如wrapperView)并添加我的自定义子视图…在你的情况下,从你的代码:

 CGRect footerRect = CGRectMake(0, 0, 320, 40); UILabel *tableFooter = [[UILabel alloc] initWithFrame:footerRect]; tableFooter.textColor = [UIColor blueColor]; tableFooter.backgroundColor = [self.theTable backgroundColor]; tableFooter.opaque = YES; tableFooter.font = [UIFont boldSystemFontOfSize:15]; tableFooter.text = @"test"; self.theTable.tableFooterView = tableFooter; [tableFooter release]; 

至:

 CGRect footerRect = CGRectMake(0, 0, 320, 40); UIView *wrapperView = [[UIView alloc] initWithFrame:footerRect]; UILabel *tableFooter = [[UILabel alloc] initWithFrame:footerRect]; tableFooter.textColor = [UIColor blueColor]; tableFooter.backgroundColor = [self.theTable backgroundColor]; tableFooter.opaque = YES; tableFooter.font = [UIFont boldSystemFontOfSize:15]; tableFooter.text = @"test"; [wrapperView addSubview:tableFooter]; self.theTable.tableFooterView = wrapperView; [wrapperView release]; [tableFooter release]; 

希望能帮助到你。 这个对我有用。

最初我只是试着这个方法:

 - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section 

但是在使用之后:

 - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section 

问题解决了。 示例程序 –

 - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { return 30.0f; } - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { UIView *sampleView = [[UIView alloc] init]; sampleView.frame = CGRectMake(SCREEN_WIDTH/2, 5, 60, 4); sampleView.backgroundColor = [UIColor blackColor]; return sampleView; } 

并包含UITableViewDelegate协议。

 @interface TestViewController : UIViewController <UITableViewDelegate> 

Swift 2.1.1下面的作品:

 func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { let v = UIView() v.backgroundColor = UIColor.RGB(53, 60, 62) return v } func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { return 80 } 

如果使用self.theTable.tableFooterView = tableFooter ,则在最后一行和tableFooterView之间有空格。

 [self.tableView setTableFooterView:footerView]; 

代替

 self.theTable.tableFooterView = tableFooter; 

尝试

 [self.theTable.tableFooterView addSubview:tableFooter]; 

我有同样的问题,但我在我的头replace下面的行:

 @interface MyController : UIViewTableViewController <UITableViewDelegate, UITableViewDataSource> 

这条线和它按预期工作:

 @interface RequestViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> 

注意UIViewController。 祝你好运 :)

如果你不喜欢粘底效应,我会把它放在viewDidLoad() https://stackoverflow.com/a/38176479/4127670