22

我一直在努力隐藏页脚视图。我的问题是,当我单击按钮时,页脚中有一个按钮部分更新后。

footerView.hidden = YES

我在按钮操作中使用了它,但它不起作用。

4

8 回答 8

46

有四种解决方案。他们是,

解决方案1:

tableView.sectionHeaderHeight = 0.0;
tableView.sectionFooterHeight = 0.0;

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger )section {
    return 1.0;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger )section {
    return 1.0;
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger )section {
    return [[UIView alloc] initWithFrame:CGRectZero];
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger )section {
    return [[UIView alloc] initWithFrame:CGRectZero];
}

解决方案2:

您可以通过尺寸选项卡下的界面构建器设置页脚/页眉高度。

解决方案3:

设置contentInset属性。

self.tableView.contentInset = UIEdgeInsetsMake(-20, 0, -20, 0);

它用于使顶部和底部接触边缘。

解决方案4:

执行以下操作,根据您的条件设置值。0.0 将不被接受。较低的值应为 1.0。

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger )section {
    if(section == 0) {
       return 6;
    } else {
       return 1.0;
    }
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger )section {
    return 5.0;
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger )section {
    return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger )section {
    return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}
于 2012-07-12T05:38:01.230 回答
18

这应该这样做

tableView.tableFooterView.hidden = YES;
于 2012-07-12T05:11:36.123 回答
8

这可以通过实现委托方法来实现

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
  return CGFLOAT_MIN;
}
于 2016-11-15T13:28:12.997 回答
5

参考@J.Hong 的回答,Swift4版本(iOS 11.3):

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return .leastNonzeroMagnitude
}

与@Tim Newton 的回答相比:

  • 没有必要打电话titleForFooterInSection
  • 简化CGFloat.leastNormalMagnitude-> .leastNonzeroMagnitude(更 Swifty IMO)
于 2018-06-09T14:31:28.543 回答
3

Swift 3.0解决方案还删除了前一个单元格和下一个标题之间的讨厌的 1px 边框。

override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.leastNormalMagnitude
}

override func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? {
    return nil
}
于 2017-03-02T01:16:30.820 回答
1

在 swift4 中:

self.tableView.tableFooterView = nil
于 2018-08-19T07:49:30.027 回答
0

不使用自定义视图时,niltableView:titleForFooterInSection:0tableView:heightForFooterInSection:.

@property(nonatomic, strong) NSString *footerTitle;
@property(nonatomic, assign) BOOL shouldHideFooter;
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
    return self.shouldHideFooter ? nil : self.footerTitle;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    return self.shouldHideFooter ? 0 : UITableViewAutomaticDimension;
}
于 2017-01-25T16:27:48.860 回答
-1

Swift 5 解决方案:(隐藏部分页脚,您可能需要另一块来摆脱表格页脚)

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return 0.0
}

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    return UIView()
}
于 2020-05-03T00:37:40.477 回答