我想在Swift 4中填充UITableView,我想只显示属于登录用户的记录。显然我需要一个IF
语句来查看两个值是否相等。如何返回null
,即没有单元格添加到表格中。请参阅以下代码
func tableView(_ tableView: UITableView,
cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier:
"RunCell") as? RunCell else { return UITableViewCell() }
let user_id_main = String(MainMenuViewController.myVariables.user_id.prefix(2))
if (user_id_main==runs[indexPath.row].user_id)
{
cell.idLbl.text = "ID: " + runs[indexPath.row].run_id
cell.dateLbl.text = "Date: " + runs[indexPath.row].date_of_run
return cell
}
return cell
}
我知道return cell
之外的IF
仍会返回一个单元格,直到找到答案为止。
答案 0 :(得分:2)
这不是UITableViews的工作方式。如果要显示单元格,您无法动态决定。您需要在加载或重新加载表之前执行此操作。
在加载或重新加载tableView之前,将数组过滤到一个新数组,该数组只包含匹配user_id
的记录。然后使用这个新数组作为表的模型。新数组的大小将决定表中的行数,每行将对应于新数组中的一个项。
每次user_id_main
更改时,请重新过滤您的runs
数组并重新加载表格。
答案 1 :(得分:0)
你不能返回nil值单元格,
要实现您想要的效果,首先根据您需要的值过滤runs
数组并存储在其他数组中mainUserRuns
,然后使用此新数组为您的tableview提供数据。 强>