使用部分时是否可以使用固定的uitableview标头?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用部分时是否可以使用固定的uitableview标头?相关的知识,希望对你有一定的参考价值。
这个问题不应该与这个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;
}
是否可以使用固定的表头,同时使用部分?请问有什么替代解决方案吗?
没有办法保持tableView
的标题固定,但是当你需要一个独特的标题时,一个有用的方法是使用UIViewController
而不是UITableViewController
,并从UIView
设置标题(tableView
)。
像这样的东西:
如果你想要一个UITableViewController(静态单元格/键盘处理)并且有一个固定的标题,那么你应该使用Containment。您可以通过设置带有固定标头的UIViewController,然后使用Container View嵌入UITableViewController,从Storyboard中执行此操作。
完成包含视图设置后,右键单击从容器视图拖动到要嵌入的视图控制器 - 在本例中为UITableViewController。
您可以通过实现prepareForSegue:sender:
方法从Container View Controller访问并获取对包含的View Controller(UITableViewController)的引用。
如果要将类保留为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)];
}
我没有这样做,但我想要尝试的第一件事就是将我的tableview放在UIView
中并在那个UIView
中制作我自己的标题。似乎是一件微不足道的事情,使得该视图看起来像是表格的标题,它肯定会保持不变。
以上是关于使用部分时是否可以使用固定的uitableview标头?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用 Storyboards 创建非全屏 UITableView?
是否可以使用Storyboard创建非全屏UITableView?
使用 UITableView 的可变高度自定义单元格调用 reloadData 时保持 UITableView 的当前位置