我对目标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
视图层次结构中的这个空白区域的高度恰好超过20个点,所以我认为它应该是某种奇怪的标题。
答案 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