在plainsytle tableview中,我们通过委托方法
为每个部分设置headerViews-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section
所以,当我向上滚动tableview时,第一部分的headerView始终显示在tableview的顶部,然后该部分完全消失在tableview上,然后第二部分的headerView将显示在tableview的顶部。所以我的问题是我如何使用youitableViewCell制作headerView滚动,就像组样式tableview一样?
答案 0 :(得分:14)
您可以通过将表属性更改为 -
来禁用滚动sectionHeaderUITableViewStyleGrouped
你必须在初始化UITableView时设置它。
OR
UITableView* table = [[UITableView alloc]initWithFrame:myFrame style:UITableViewStyleGrouped];
答案 1 :(得分:12)
继承UITableView并覆盖此方法
- (BOOL)allowsHeaderViewsToFloat{
return NO;
}
页脚相同
- (BOOL)allowsFooterViewToFloat{
return NO;
}
但我认为这是一个私有API ...你将无法将其提交给AppStore
如果您将其上传到AppStore;那你还有两个选择
答案 2 :(得分:7)
我有同样的问题,当我浏览时,我来到这个链接See The accepted answer,我得出结论,你需要将tableViewHeader Style设置为Group并且它可以正常工作。
答案 3 :(得分:5)
只需将表格样式从“普通”更改为“分组”即可。
答案 4 :(得分:2)
如果您有多个部分,则可以使用某些第三方API自定义
否则你可以使用Grouped表而不是普通的tableView来尝试这个。
当您将自定义视图指定为tableView标题视图时,请尝试这样,它将成为表格的标题视图,并将使用表格视图滚动
-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *sectionView =[[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 200)];
tableView.tableHeaderView =sectionView;
return sectionView;
}
答案 5 :(得分:0)
将表格的UITableViewStyle
从UITableViewStylePlain
更改为UITableViewStyleGrouped
,这将使标题与单元格一起向上滚动。
答案 6 :(得分:0)
迅速:
正如Hani Ibrahim指出的那样,您需要继承UITableView。苹果说你:
must specify style at creation.
所以:
override init(frame: CGRect, style: UITableViewStyle) {
super.init(frame: frame, style: .grouped)
注意我的super.init如何使用.grouped作为样式。 对于这种样式的表视图(.grouped),Apple还说:
Summary
A table view whose sections present distinct groups of rows. The section headers and footers do not float.
然后,您可以调用以下tableView委托方法:
viewForHeaderInSection
和heightForHeaderInSection
(请注意,这些仅用于页眉,如果需要页脚,也可以使用页脚副本)
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerLabel = UILabel()
headerLabel.text = "My cool header title"
headerLabel.textAlignment = .center
headerLabel.font = UIFont(name: "OpenSans-Bold", size: 16)
return headerLabel
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 44
}
那应该做到的!祝你好运。
答案 7 :(得分:0)
您可以更改tableView的样式。
let tableView = UITableView(frame: .zero, style: .grouped)