AUITableView
的tableFooterView
属性是一个UIView
始终显示在内容底部、最后一部分下方的对象。即使这在 Apple 的文档中并不是很清楚(摘录:“返回显示在表格下方的附件视图。”)。
如果您希望页脚是静态且非浮动的,您有两个简单的选择:
- 不理想但很简单:使用最后一节的页脚视图作为静态页脚。这将在某些条件下起作用:
- 您的
UITableView
样式必须是UITableViewStylePlain
(与UITableViewStyleGrouped
节页眉/页脚的行为相同)UITableView tableHeaderView
tableFooterView
- 您将无法将最后一节页脚用于其真正目的:为特定部分提供页脚信息
这是一个简单的例子:
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
UIView *view = nil;
if (section == [tableView numberOfSections] - 1) {
// This UIView will only be created for the last section of your UITableView
view = [[UIView alloc] initWithFrame:CGRectZero];
[view setBackgroundColor:[UIColor redColor]];
}
return view;
}
- 现在最好的解决方案:在与您的
UITableView
. 一个小条件:
- 你的
self.view
财产UIViewController
不能是你的UITableView
对象。这意味着您不能子类化UITableViewController
,而是UIViewController
使您的控制器符合UITableViewDataSource
和UITableViewDelegate
协议。它实际上比它看起来更简单,并且比直接使用更好(就我而言)UITableViewController
。
这是代码中的一个简单示例(但您可以使用 Interface Builder 完全相同):
视图控制器.h:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@end
视图控制器.m:
#import "ViewController.h"
@interface ViewController ()
@property (strong, nonatomic) UITableView *tableView;
@property (strong, nonatomic) UIView *fixedTableFooterView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
CGFloat fixedFooterHeight = 200.0;
// Initialize the UITableView
CGRect tableViewFrame = CGRectMake(CGRectGetMinX(self.view.bounds), CGRectGetMinY(self.view.bounds), CGRectGetWidth(self.view.bounds), CGRectGetHeight(self.view.bounds) - fixedFooterHeight);
self.tableView = [[UITableView alloc] initWithFrame:tableViewFrame style:UITableViewStylePlain]; // or Grouped if you want...
[self.tableView setDataSource:self];
[self.tableView setDelegate:self];
[self.view addSubview:self.tableView];
// Initialize your Footer
CGRect footerFrame = CGRectMake(CGRectGetMinX(self.view.bounds), CGRectGetMaxY(self.view.bounds) - fixedFooterHeight, CGRectGetWidth(self.view.bounds), fixedFooterHeight); // What ever frame you want
self.fixedTableFooterView = [[UIView alloc] initWithFrame:footerFrame];
[self.fixedTableFooterView setBackgroundColor:[UIColor redColor]];
[self.view addSubview:self.fixedTableFooterView];
}
- (void)viewDidUnload {
[super viewDidUnload];
[self setTableView:nil];
[self setFixedTableFooterView:nil];
}
@end
您还可以指定UIViewAutoresizing
蒙版以使其在纵向和横向中无缝工作,但我并没有使这个相当简单的代码复杂化。
警告:这个 .h 和 .m 文件不会编译,因为我没有输入UITableViewDataSource
所需的方法。如果您想查看它的实际效果,请评论该setDataSource:
行。
希望这会有所帮助,
其他详情可以问我,