【问题标题】:How to remove empty cells from UITableView? [duplicate]如何从 UITableView 中删除空单元格? [复制]
【发布时间】:2017-06-17 19:31:41
【问题描述】:

我有一个 UITableView,其中的单元格包含来自服务器响应的数据,这意味着并非每次所有单元格都显示数据。所以我需要删除那些“空”单元格。我已经搜索过,找不到任何可能的解决方案。 How to remove empty cells in UITableView? 的解决方案没有成功。实际上它让我的 tableview 消失了。

除了添加页脚视图之外,我还需要其他解决方案。有吗?

【问题讨论】:

  • 您是否尝试添加空页脚视图,以便从 tableview 隐藏所有不需要的空单元格?
  • 你有代码吗?如果你这样做,请分享它。这会让事情变得更清晰、更容易理解。
  • 你能检查这个链接以删除tableview中的单元格stackoverflow.com/questions/1369831/…
  • @CodeChanger 我已经试过了。不工作。它让我的 tableview 消失了。
  • @PrissyEve 与我上面所说的相同的解决方案.. 不工作..

标签: ios objective-c xcode uitableview


【解决方案1】:

您应该检查来自服务器的数据,并且只将非零数据添加到 tableview 数据源。

然后重新加载您的表格视图。

这样您的表格视图将不会有任何空单元格。很简单。

如果您的问题是显示的单元格数量没有填满您的视图

你可以试试

tableview.tableFooterView = UIView()

【讨论】:

  • 我已经检查过了,如果有非空数据只有 tableview 被重新加载。否则将显示“无数据”消息的警报。
  • 我说的是每个单元格的特定数据,只需通过“for”循环运行服务器响应,并且只将非 nil 数据添加到数据源中
  • @Hamed 我只是更新我的答案看看
【解决方案2】:

您也可以从 nib 执行此操作。

来源:

    - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {

    return 0.01f;
    }

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

【讨论】:

    【解决方案3】:

    删除表格视图底部的空单元格

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

    或者使用这个

    self.tableView.tableFooterView = UIView()
    

    【讨论】:

      【解决方案4】:

      如果您在谈论分隔符;您可以通过更改 UITableView 的属性“分隔符”来删除它。

      但这也会影响数据单元格。您必须在数据单元格中添加自定义分隔线。

      【讨论】:

      • op 的问题是要删除空单元格而不是单元格分隔符,你看到了吗?
      • 实际上,我的问题是删除空单元格,我找到了解决方案。只需在情节提要中给出表格视图高度约束并将其拖到您的 .h 文件中即可。现在在重新加载表格之前/之后添加以下代码:tableviewHeight=[array count]*[row height];。但这导致了我不需要的最终单元格的单元格分隔符。因此,我将您的解决方案与我的解决方案结合起来,现在可以完美运行!
      【解决方案5】:

      您可以使用这两种方法之一。

      1. self.tableView.tableFooterView.frame = CGRectZero;
      2. self.tableView.tableFooterView = [[UIView alloc]initWithFrame:CGRectZero];
      

      【讨论】:

      • 像魅力一样工作,谢谢!
      【解决方案6】:

      我希望您通过arraycell 中添加数据。因此,仅当您从服务器接收数据时才在数组中添加数据。如果您没有从服务器接收数据,请不要添加任何内容。并返回 numberOfRows 你的 arrays 计数。

      【讨论】:

        【解决方案7】:

        试试这个

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

        【讨论】:

          猜你喜欢
          • 2013-01-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-24
          • 2013-09-25
          • 1970-01-01
          相关资源
          最近更新 更多