如何在 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 中隐藏/删除空表视图行?的主要内容,如果未能解决你的问题,请参考以下文章
以 NSException 类型的未捕获异常终止 - 删除表视图行