UITableView(已分组)在底部添加额外的空标题

时间:2015-06-16 08:21:04

标签: ios objective-c uitableview

我对目标C和iOS有点新手,所以我的问题可能是愚蠢的:) 我在调试模式下检查了self.tableData,那里没有空项,numberOfSectionsInTableView返回正确的值。 这是UITableView数据源方法:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSArray *arr = self.tableData[section];
return arr.count;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return self.sortedDates.count;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    NSLog(@"%d", [tableView.dataSource tableView:tableView numberOfRowsInSection:section]);
    if ([tableView.dataSource tableView:tableView numberOfRowsInSection:section] == 0) {
        return 0;
    } else {
        return 20.0f;
    }
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    UIView *footer = [[UIView alloc] initWithFrame: CGRectZero];
    footer.backgroundColor = [UIColor whiteColor];
    return  footer;
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    if(section < self.sortedDates.count) {
        UILabel *sectionHeader = [[UILabel alloc] initWithFrame:[tableView rectForHeaderInSection:section]];
      //Setting header appearance
    return sectionHeader;
} else {
    UIView *blankHeader = [[UIView alloc] initWithFrame: [tableView rectForHeaderInSection:section]];
    blankHeader.backgroundColor = [UIColor whiteColor];
    return blankHeader;
    }
}

这是我得到的:

在模拟器中: http://take.ms/rm2DL

视图层次结构中的

http://take.ms/oALdi

这个空白区域的高度恰好超过20个点,所以我认为它应该是某种奇怪的标题。

2 个答案:

答案 0 :(得分:0)

Are you sure it is not the footer view which you are returning? Try changing the footerForSection method there to just return nil

答案 1 :(得分:0)

不要返回页脚的CGRectZero视图,只需返回nil。

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    return  nil;
}

此外,您似乎没有实施heightForFooterInSection:section。这应该返回0.0。

这似乎已经出现过,似乎iOS经常会将底部填充到20分。 SO问题与iOS6有关但我注意到与iOS8.3有关的评论,所以可能仍然相关。 Grouped UITableView has 20px of extra padding at the bottom