是否应始终使用条件绑定来使单元格出列

时间:2016-09-27 10:33:37

标签: ios uitableview

在我的单元格中,在indexPath的行中,我一直在使用以下代码来完成我的大部分工作,因为这就是我所教授的内容。我想知道,如果让我做这项工作,是否有必要一直使用?因为我从未发现我曾经落入其他声明。

如果让我或者只是让它进入cellForRowAtIndexPath?

,我什么时候需要使用?
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    if let cell = tableView.dequeueReusableCellWithIdentifier("myCustomCell") as? myCustomCell {

    } else {
        return myCustomCell()
    }
}

1 个答案:

答案 0 :(得分:0)

UITableView有两种出队模式:

  1. dequeueReusableCell(withIdentifier:):表视图尝试将单元格出列。如果没有,它将尝试使用您在reuseIdentifier注册的单元格创建一个。如果您没有注册一个单元格,它将返回nil,让您有机会自己创建一个单元格。
  2. 这是代码中else子句生效的地方。基本上从来没有,因为大概是你注册了一个细胞类。最有可能在故事板中(通过在检查器中设置标识符),但you can also do it in code

    1. dequeueReusableCell(withIdentifier:for:),请注意其他参数。表视图尝试使单元格出列:如果没有,它将尝试使用您使用reuseIdentifier注册的单元格类创建一个单元格。如果你没有注册一个单元格,它就会崩溃。
    2. <强>解决方案

      如果您可以保证a)单元格已正确注册,并且b)单元格的类型设置正确,您通常会使用第二个选项。这可以避免您遇到的确切问题:

      let cell = tableView.dequeueReusableCellWithIdentifier("myCustomCell", forIndexPath: indexPath) as! myCustomCell
      

      (但是,即使在这种情况下,使用if let仍然完美无缺。)​​