我有UIViewController
,其中嵌入了多个UITableView
。对于某些表,我需要显示带有多个标签的自定义标题视图。对于其他表格,我根本不想显示标题(也就是说,我希望myTable2
中的第一个单元格位于myTable2
的框架顶部。这里大致有我的意思:
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if (tableView == self.myTable1)
// Wants Custom Header
{
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,tableView.contentSize.width,20);
// ... Do stuff to customize view ...
return view;
}
elseIf (tableView == self.myTable2)
// Wants No header
{
return nil;
// also tried
// return [[UIView alloc] initWithFrame:CGRectMake(0,0,0,0)];
// but that didn't work either
}
}
这适用于自定义标题,但对于我不想要任何标题的表格,它会显示一个白框。我认为return nil;
会阻止为该表显示任何标题。这个假设是否正确?还有别的东西会覆盖吗?我怎么能这么做才能显示出来?
答案 0 :(得分:11)
每当您实施viewForHeaderInSection
方法时,您还必须实施heightForHeaderInSection
方法。对于没有标题的部分,请务必返回0
作为高度。
答案 1 :(得分:1)
如果您使用这种方式,则无需计算身高。
tableView.sectionHeaderHeight = UITableViewAutomaticDimension
tableView.estimatedSectionHeaderHeight = 50
如果您有空白部分,可以将高度设置为零,或者您不需要此方法。
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
if section == 2 {
return 0
}
return UITableViewAutomaticDimension
}
答案 2 :(得分:0)
根据@rmaddy评论
检查此代码-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
if (tableView == self.myTable1)
// Wants Custom Header
{
//custome header height
return 20.0f;//height of custom header
}
elseIf (tableView == self.myTable2)
// Wants No header
{
return 0;
}
}
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if (tableView == self.myTable1)
// Wants Custom Header
{
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,tableView.contentSize.width,20);
// ... Do stuff to customize view ...
return view;
}
elseIf (tableView == self.myTable2)
// Wants No header
{
return nil;
}
}