iPhone UITableView:如何删除组样式表中各节之间的间距?

Bha*_*tap 17 iphone objective-c uitableview tableview ios

我正在创建一个表视图,其中有10个部分,都有标题视图但没有单元格.因此,简而言之,我的表视图仅显示10个标题视图; 任何部分都没有细胞.现在,当我这样做时,部分的标题视图之间有一些空格.我想删除那个空间.那可能吗?你可以给我一些提示或解决这个问题吗?

以下是数据源方法:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
   return 10;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
  return 0;
}

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UILabel * label = [[UILabel alloc] init];
    label.backgroundColor = [UIColor grayColor];
    return label;
}

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 44.0f;
}
Run Code Online (Sandbox Code Playgroud)

以下是输出的屏幕截图: 在此输入图像描述

我有一个复杂的原因,为什么我这样做,我不能通过写作来解释.我想要做的就是在节的标题视图中没有间距.先感谢您.

RAJ*_*AJA 48

试试这个..

   self.tableView.rowHeight = 0; // in viewdidload
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; // in viewdidload

 -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.01f;
}

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return <your header height>;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
return [[UIView alloc] initWithFrame:CGRectZero];
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
return <your header view>;
}
Run Code Online (Sandbox Code Playgroud)

也有表seprator为none.

  • 是的它正在工作,我只是从heightForFooterInSection方法返回0.01f并且它工作.非常感谢 .如果您可以编辑答案并使其可能为0.01,我可以将其标记为正确答案. (3认同)

MMi*_*lav 21

如果返回0,tableView:heightForFooterInSection:则返回默认值(可能为10.0).这很棘手,但您可以使用CGFLOAT_MIN而不是0删除页脚.

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return CGFLOAT_MIN;
}
Run Code Online (Sandbox Code Playgroud)

更新:

斯威夫特3:

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.leastNormalMagnitude
}
Run Code Online (Sandbox Code Playgroud)