这个问题不应与此here.混淆。这是两件不同的事情。
有一个good example如何在SO上使用UITableView标头。
这一切都很好,只要样式设置为plain
,主标题就会固定在顶部。
但是如果我使用sections
,那么主标题不再粘在顶部,而是在滚动到底部时移开。
在这个方法中,我返回每个部分的标题。
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
在这个方法中,我设置上面标题部分的高度:
- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
在这个方法中,我正在设置真正的表头。
- (void)viewWillAppear:(BOOL)animated {
...
self.recordTableView.tableHeaderView = headerView;
}
在使用部分时,是否可以使用固定的表头? 请问有什么替代解决方案吗?
答案 0 :(得分:62)
如果你想要一个UITableViewController(静态单元格/键盘处理)并且有一个固定的标题,那么你应该使用Containment。您可以通过设置带有固定标头的UIViewController,然后使用Container View嵌入UITableViewController,从Storyboard中执行此操作。
一旦进行了包含视图设置,右键单击从容器视图拖动到要嵌入的视图控制器 - 在这种情况下为UITableViewController。
您可以通过实现prepareForSegue:sender:
方法从Container View Controller访问并获取对包含的View Controller(UITableViewController)的引用。
答案 1 :(得分:26)
无法维护tableView
固定的标题,但是
当您需要唯一标头时,一种有用的方法是使用UIViewController
而不是UITableViewController
,并从{设置标题UIView
)输出 {1}}。
这样的事情:
答案 2 :(得分:4)
如果要将类保留为UITableViewController,可以将标题作为子视图添加到tableview的superview中。您还必须将tableview顶部嵌入,因此您的标题视图不会隐藏表格。
以下是放入tableViewController子类的示例代码(此示例假设您的tableview控制器位于导航控制器内,因此它将视图推送到导航栏下方):
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.automaticallyAdjustsScrollViewInsets = NO;
}
-(void)addHeaderView{
CGFloat yPosition = self.navigationController.navigationBar.frame.origin.y + self.navigationController.navigationBar.frame.size.height;
mainHeaderView = [[UIView alloc] init];
const CGFloat mainHeaderHeight = 44;
[mainHeaderView setFrame:CGRectMake(0, yPosition, self.view.frame.size.width, mainHeaderHeight)];
mainHeaderView.backgroundColor = [UIColor redColor];
[self.tableView.superview addSubview:mainHeaderView];
[self.tableView setContentInset:UIEdgeInsetsMake(yPosition + mainHeaderHeight, self.tableView.contentInset.left, self.tableView.contentInset.bottom, self.tableView.contentInset.right)];
}
答案 3 :(得分:2)
我还没有这样做,但我想要尝试的第一件事就是将我的tableview放在UIView
中并在UIView
中创建自己的标题。看似微不足道的事情使得该视图看起来像是表格的标题,它肯定会保持不变。