我们怎样才能隐藏tableHeaderView和tableFooterView?

时间:2011-11-10 12:56:10

标签: iphone objective-c ios

我有两个按钮,我将它添加到表格页脚中,另一个添加到表格标题中,我知道如何使用此代码table.tableHeaderView.hidden = YES;隐藏表格的标题视图 但问题是表的顶部仍然有空格。这个空间等于标题视图大小,但是视图是隐藏的。它仍然有空格。如何通过删除这个来禁用表标题我希望天才开发者能理解我的问题。请帮助我。 提前谢谢。

8 个答案:

答案 0 :(得分:68)

而不是隐藏你应该做的标题视图,

tableView.tableHeaderView = nil

稍后如果您想要显示它,那么只需再次分配它,

tableView.tableHeaderView = tableHeaderView;

在斯威夫特:

class myTableViewController: UITableViewController {

    @IBOutlet var tableHeaderView: UIView!

    private func toggleHeaderView() {
        if tableView.tableHeaderView == nil {
            tableView.tableHeaderView = tableHeaderView 
        } else { 
            tableView.tableHeaderView = nil 
        }
    }

}
在您的故事板上

,只需将UIView拖入表视图即可。它将“神奇地”成为表视图标题(如果你再做一个,它将成为表视图页脚)。 您必须点击标题视图,拖动引用到表格视图控制器,然后链接它是“tableHeaderView”......那部分不是“魔法”。

请注意,因为“!”在声明中,您必须记住在Storyboard上拖动链接,否则在测试期间会出现运行时错误,这是件好事。

答案 1 :(得分:6)

尝试:

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

将UIView的高度设置为CGFloat.leastNonzeroMagnitude而不是'0'。 删除tableViewHeader之后,这将删除顶部显示的空白。 这对我有用。

答案 2 :(得分:3)

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

答案 3 :(得分:2)

//hidden sectionFooter

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

答案 4 :(得分:1)

当“reloadData”

时,

removeFromSuperview或设置nil不起作用

{{1}}

答案 5 :(得分:1)

如果您在情节提要中创建了视图,则可以使用以下方法将其暂时隐藏

null

要再次显示,请使用

def firewall(): result = dict() for ip in ip_list: push_resp = dummy_get_push_resp() result[ip] = push_resp return result

答案 6 :(得分:0)

if tableView.tableHeaderView == nil{ 
tableView.tableHeaderView = self.headerHolder 
}
else
{
 tableView.tableHeaderView = nil 
}
}

你应该创建一个outlet headerHolder&它必须是一个强大的财产。如果我们为headerHolder使用了一个弱属性,一旦它为零,它就被释放了。你不能再把它设置为标题

答案 7 :(得分:0)

通常,在使用“ viewForHeaderInSection”设置了头视图之后,虚假头视图会继续出现,并随后以编程方式隐藏或设置为nil。要使其完全消失,请显式设置sectionHeaderHeight = 0。

目标C:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger) section
{
    if (self.viewMode == SectionHeaderShouldBeHidden)
    {
        tableView.sectionHeaderHeight = 0;
        return nil;
    }
    else if (self.viewMode == SectionHeaderShouldAppear)
    {
        //section text as a label
        UILabel *lbl = [[UILabel alloc] init];
        lbl.textAlignment = NSTextAlignmentCenter;
        lbl.font = [UIFont boldSystemFontOfSize:13];
        lbl.textColor = [UIColor whiteColor];
        [lbl setBackgroundColor:App.secondaryColor];
        tableView.sectionHeaderHeight = 20;

        if (self.queryResultsViewModel.items.count == 0)
            return lbl;

        lbl.text = @"Section Header Text";

        return lbl;
    }
}

快速4 +:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

    if !self.viewMode == HeaderShouldBeShown
    {
        self.listView.sectionHeaderHeight = 0
        return nil
    }

    let lbl: UILabel = UILabel.init()
    lbl.textAlignment = NSTextAlignment.center
    lbl.font = UIFont.boldSystemFont(ofSize: 13)
    lbl.textColor = UIColor.white
    lbl.backgroundColor = UIColor.black
    tableView.sectionHeaderHeight = 20
    lbl.text = "Section Header Text"
    return lbl
}