如何在 Swift 中隐藏/删除空表视图行?

Posted

技术标签:

【中文标题】如何在 Swift 中隐藏/删除空表视图行?【英文标题】:How to Hiding/delete empty table view rows in Swift? 【发布时间】:2019-11-12 13:15:54 【问题描述】:

您好,我有表格视图从 API 获取数据

但我想显示具有特殊条件的行

我试图隐藏我不想要的行,但我不想在单元格中显示它们

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell: DetailsListCell = tableView.dequeueReusableCell(at: indexPath)
    switch self.type!
    case "inbox":
        if inboxData[indexPath.row].delYn != "Y"
           cell.configure(withDate: inboxData[indexPath.row].dodate, withName: inboxData[indexPath.row].deptNm, withMsgNameBottom: inboxData[indexPath.row].title)
        else
            cell.isHidden = true
         

【问题讨论】:

您可以改为对数据源应用过滤器。 什么类型的过滤器应该应用于数据库 类似inboxData = fullArray.filter $0.delYn != "Y" 的东西(基本上是您在 sn-p 中检查的内容 - 我只能假设没有其他上下文) 我现在试试谢谢 【参考方案1】:

您不应在此方法中隐藏单元格。相反,您应该有一个数据模型或一些指示器,它应该告诉表格视图显示哪些行以及隐藏哪些行。

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return 3 // only the number of rows to show

【讨论】:

行数增加取决于来自服务器的数据 您应该将行数存储在一个变量中。然后,每当从服务器加载数据时,调用 tableView.reloadData() 并在 numberOfRowsInSection 函数中返回该变量。这样你的数据就会更新【参考方案2】:

我试过了,这个简单的方法 100% 有效 在高度中,单元格放置条件,如果另一个单元格不符合条件 然后让单元格的高度为 0

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
        if inboxData[indexPath.row].delYn != "Y"
            return 130
        else
            return 0
         

【讨论】:

以上是关于如何在 Swift 中隐藏/删除空表视图行?的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift中的动态表视图中创建动态表视图?

无法将数组名称传递到 Swift 3 中的表视图中

以 NSException 类型的未捕获异常终止 - 删除表视图行

如何将第二个表格视图的值与第一个表格视图的单击行的关系分开?

从数据库中获取记录时显示空表视图

在 Swift 中删除表格视图的核心数据记录(行)