我正在创建一个表视图,其中有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;
}
以下是输出的屏幕截图:
我有一个复杂的原因,为什么我这样做,我不能通过写作来解释。我想要做的就是在节的标题视图中没有间距。提前谢谢。
答案 0 :(得分: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>;
}
也将表分隔符设置为无。
答案 1 :(得分:20)
如果在0
中返回tableView:heightForFooterInSection:
,则返回默认值(可能为10.0)。这很棘手,但您可以使用CGFLOAT_MIN
代替0
来删除页脚。
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return CGFLOAT_MIN;
}
更新
Swift 3 :
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return CGFloat.leastNormalMagnitude
}
答案 2 :(得分:3)
尝试使用以下代码
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.25; // as for you need
}
您也可以通过以下委托方法进行管理
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
很短,您可以通过以上两种方法来管理它。
答案 3 :(得分:3)
分组样式表视图有一个默认页脚,你还应该自定义页脚来覆盖它
或
尝试简单的风格。
typedef enum {
UITableViewStylePlain,
UITableViewStyleGrouped
} UITableViewStyle;
答案 4 :(得分:3)
答案 5 :(得分:1)
所以我不能投票,但我可以发表回复
事实上这种方式的正确答案
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return CGFLOAT_MIN;
}
答案 6 :(得分:0)
将表视图样式从分组更改为普通。这解决了我的问题。
答案 7 :(得分:0)
您需要使用方法heightForHeaderInSection。您也可以根据不同的部分进行更改,例如。在某些部分,您可能需要显示更多距离&amp;在某些情况下,你不想表现出差距。对于这种情况,您可以使用0.000001f的CGFLOAT_MIN。举个例子,你如何使用不同的标题高度的不同部分
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { if (section == 0 || section == 2) { return 55.0; } else { return CGFLOAT_MIN; } }
希望它会对你有所帮助。
答案 8 :(得分:-1)
尝试使用:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 0;
}
如评论中所述,请尝试使用:
self.tableView.rowHeight = 0;