有没有办法在UITableView中的条件后不返回单元格?

时间:2019-03-30 09:20:30

标签: ios swift uitableview

我正在使用UITableView,并且想在cellForRowAt函数内添加条件语句来决定是否应该返回单元格。

这是我的意思的示例:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  // Here is where I add the code to calculate which cells should appear, though it's not important for this example

  if  condition {
    return cell
  } 
}

但是我收到的错误消息是Missing return in a function expected to return 'UITableViewCell'

有什么办法我不能退货吗?

3 个答案:

答案 0 :(得分:2)

恐怕唯一可以接受的解决方案是这样做:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    // Here is where I add the code to calculate which cells should appear, though it's not important for this example

    if condition {
        return cell
    } 

    // return empty cell
    return UITableViewCell()
}

答案 1 :(得分:1)

  

有什么办法我不能退货吗?

即使这不是最佳做法-是的,您也可以使用致命错误来使Xcode编译时错误消息静音:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  // Here is where I add the code to calculate which cells should appear, though it's not important for this example

  if condition {
    return cell
  } 

  fatalError()
}

但是如果由于某种原因condition为假-应用程序将崩溃,因此请注意。

为了从致命错误中获取更多上下文,您可以向其传递描述发生了什么的字符串,例如:

fatalError("Condition Is Invalid, Failed Returning a Cell")

答案 2 :(得分:0)

否,您需要始终返回一个单元格。

如果需要抑制单元格,最好使用数据源方法,例如numberOfRowsInSection