删除标题后如何删除UITableView标题上的空白空间?

时间:2014-05-20 10:25:10

标签: ios uitableview

我想在将UITableView设置为视图后将 [_tableViewController.tableView.tableHeaderView removeFromSuperview]; _tableViewController.tableView.tableHeaderView=nil; [_tableViewController.tableView reloadData]; (不是部分的标题)的标题视图设置为nil。

我尝试了很多组合来做这个,包括以下内容,我的视图被删除但我仍然得到一个我从未得到的空白空间如果我从未设置标题视图。

UITableViewStyleGrouped

(我还尝试设置一个零高度的视图并相应地设置框架但是也没有工作。(将其设置为1px高度有效,但它不是一个好的解决方案,它仍然有那里有一些空间...)

我在这里做错了什么?

更新:我发现这是由UITableViewStylePlain导致的,将表格样式更改为UITableViewStyleGrouped后,它才有效。但我必须继续使用{{1}}。 这不可能吗?如果是这样,为什么?如果是,怎么样?

3 个答案:

答案 0 :(得分:1)

这将有效: -

tableViewController

-(void)viewWillAppear:(BOOL)animated{
  [super viewWillAppear:animated];
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(removeheaderView) name:@"removeheaderView" object:nil];
}

-(void)viewWillDisappear:(BOOL)animated{
  [super viewWillDisappear:animated];
  [[NSNotificationCenter defaultCenter] removeObserver:self name:@"removeheaderView" object:nil];
}

-(void)removeheaderView{
  [self.tableView.tableHeaderView removeFromSuperview];
  self.tableView.tableHeaderView=nil;
  [self.tableView reloadData];
}

viewControllerA 中,替换

 [_tableViewController.tableView.tableHeaderView removeFromSuperview];
 _tableViewController.tableView.tableHeaderView=nil;
 [_tableViewController.tableView reloadData];

[[NSNotificationCenter defaultCenter]postNotificationName:@"removeheaderView" object:nil];

请尝试告诉我结果。

答案 1 :(得分:0)

我知道发布它的答案为时已晚,以便其他人可以从中受益。

尝试:

tableView.tableHeaderView?.removeFromSuperview()
tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: CGFloat.leastNonzeroMagnitude))
tableView.layoutIfNeeded()

将UIView的高度设置为CGFloat.leastNonzeroMagnitude而不是“ 0”。

这对我有用。

答案 2 :(得分:-1)

您应该实现UITableView的数据源方法:

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

并将其设置为0.