cellForRow(at:)返回nil

时间:2018-10-08 06:15:07

标签: ios swift uitableview

所以我有这个功能。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {  
    let cellIdentifier = "Cell"
    let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier) as! customCell
    changeCellProperty(selectedIndexPath: indexPath)
    return cell;
}

func changeCellProperty(selectedIndexPath: IndexPath){
    print("indexpath = \(selectedIndexPath)") . // printing [0,0] and all values
    let cell = self.tableView.cellForRow(at: selectedIndexPath) as! customCell    
    // got nil while unwrapping error in above statement.

    cell.label.text = ""
    // and change other properties of cell.
}

我无法理解该错误。 当我获得索引路径时,为什么不能指向一个特定的单元并相应地更改属性。

1 个答案:

答案 0 :(得分:4)

您无法访问尚未添加到tableView的单元格。这就是您尝试在changeCellProperty方法中执行的操作。因此,如果您的出队工作正常,那么您要做的就是将已出队的单元格传递给该方法。

func changeCellProperty(cell: customCell){
     cell.label.text = ""
     // and change other properties of cell.
}

您的cellForRowAt方法看起来像这样。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cellIdentifier = "Cell"
    let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier) as! customCell
    changeCellProperty(cell: cell)
    return cell
}

注意:类名称应为 UpperCamelCase 。因此,您的customCell应该命名为CustomCell