当我滚动tableview时,我怎样才能使headerView滚动(不留在tableview的顶部)和UItableViewCell一起

use*_*382 16 uitableview ios

在plainsytle tableview中,我们通过委托方法为每个部分设置headerViews

-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section 
Run Code Online (Sandbox Code Playgroud)

因此,当我向上滚动tableview时,第一部分的headerView始终显示在tableview的顶部,然后该部分完全消失在tableview上,然后第二部分的headerView将显示在tableview的顶部.所以我的问题是我如何使用youitableViewCell制作headerView滚动,就像组样式tableview一样?

Lal*_*hna 18

您可以通过将表属性更改为 - 禁用滚动sectionHeader

UITableViewStyleGrouped
Run Code Online (Sandbox Code Playgroud)

你必须在初始化UITableView时设置它.

  • 从StoryBoard设置

要么

UITableView* table = [[UITableView alloc]initWithFrame:myFrame style:UITableViewStyleGrouped]; 
Run Code Online (Sandbox Code Playgroud)


Han*_*him 15

继承UITableView并重写此方法

- (BOOL)allowsHeaderViewsToFloat{
    return NO;
}
Run Code Online (Sandbox Code Playgroud)

同样的页脚

- (BOOL)allowsFooterViewToFloat{
    return NO;
}
Run Code Online (Sandbox Code Playgroud)

但我认为这是一个私有API ...您将无法将其提交给AppStore

如果您将其上传到AppStore; 然后你还有两个选择

  1. 添加普通单元格而不是节标题
  2. 如果您只有一个部分,那么您只需使用表头而不是部分头

  • 我把它放在一个类别而不是子类中,它通过了审查\m/。 (2认同)

Aks*_*are 10

只需将表格样式从“普通”更改为“分组”即可。


iCo*_*ple 7

我有同样的问题,当我浏览时,我来到这个链接看到接受的答案 ,我得出结论,你需要将tableViewHeader样式设置为组,它的工作原理魅力.


小智 6

您可以更改 tableView 的样式。

let tableView = UITableView(frame: .zero, style: .grouped)
Run Code Online (Sandbox Code Playgroud)