在 UITableView 中隐藏页脚视图

Posted

技术标签:

【中文标题】在 UITableView 中隐藏页脚视图【英文标题】:Hide footer view in UITableView 【发布时间】:2012-07-11 19:37:23 【问题描述】:

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

footerView.hidden = YES

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

【问题讨论】:

【参考方案1】:

应该这样做

tableView.tableFooterView.hidden = YES;

【讨论】:

我不认为你试图隐藏“footerView”,而是隐藏该部分的最后一个单元格。我的回答正确显示了如何隐藏 footerView 它没有隐藏 footerview man 。下一部分在 footerview 之后。 页脚视图有两种:tableFooterView 和 sectionFooterView。因此混乱...... 要让它工作,你应该这样做,- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section [tableView.tableFooterView setHidden:YES]; return 1.0f; 关键是返回 1.0f 这不起作用。部分页脚没有隐藏,甚至没有减少到 0 高度。【参考方案2】:

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

解决方案 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)];

【讨论】:

@@Ramshad 您应该引用或注明您复制的作品。此外,指定 0.00001f 会导致高度为零。 ***.com/questions/2817308/…【参考方案3】:

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

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section 
  return CGFLOAT_MIN;

【讨论】:

【参考方案4】:

不使用自定义视图时,从tableView:titleForFooterInSection: 返回nil,从tableView:heightForFooterInSection: 返回0

@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;

【讨论】:

【参考方案5】:

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

【讨论】:

我必须根据 HTTP 请求显示/隐藏页脚。我如何应用更改?因为您的示例最初是执行的,我猜。【参考方案6】:

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

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

与@Tim Newton 的回答相比:

无需拨打titleForFooterInSection 简化 CGFloat.leastNormalMagnitude -> .leastNonzeroMagnitude(更 Swifty IMO)

【讨论】:

【参考方案7】:

在 swift4 中:

self.tableView.tableFooterView = nil

【讨论】:

【参考方案8】:

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

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


func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? 
    return UIView()

【讨论】:

这个帮助了我。谢谢。

以上是关于在 UITableView 中隐藏页脚视图的主要内容,如果未能解决你的问题,请参考以下文章

UITabBar 覆盖的 UITableView 页脚视图

使用自动布局对 uitableview 页脚视图进行运行时扩展

限制 UItableView 的页眉和页脚的视图宽度

endUpdates 后的 UITableView 部分页脚视图位置

将 UITextView 放在 UITableView 页脚中

在不重新加载整个表格视图的情况下更改 UITableView 的部分页眉/页脚标题