无法从可重用的UITableViewCell队列中加载自定义单元格

时间:2019-03-23 16:26:40

标签: ios swift uitableview

我正在使用xib文件创建自定义单元。重用标识符在xib文件中设置。然后,我有一个惰性变量,只能用来注册一次笔尖:

private lazy var registerNib: Bool = {
    let nib = UINib(nibName: "CustomTableViewCell", bundle: nil)
    self.tableView.register(nib, forCellReuseIdentifier: "Custom")

    return true
}()

在单元格创建过程中,我只是使用了惰性变量,并使用了xib文件中相同的重用标识符从表视图中将该单元出队:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let _ = self.registerNib
    let cell = tableView.dequeueReusableCell(withIdentifier: "Custom") as! CustomCell

    return cell
}

但是解包失败并且应用程序崩溃。

  

tableView.dequeueReusableCell返回nil

由于某种原因。...

2 个答案:

答案 0 :(得分:1)

有两种名为dequeueReusableCell的方法。

但是解包失败并且应用程序崩溃。 tableView.dequeueReusableCell由于某些原因返回。...

您使用的是第一个,文档中明确指出

  

返回值

     

具有关联的UITableViewCellidentifier的{​​{1}}对象,如果在可重用单元格队列中不存在这样的对象。


您可能要使用后者。 更改行:

nil

收件人:

let cell = tableView.dequeueReusableCell(withIdentifier: "Custom") as! CustomCell

答案 1 :(得分:0)

您需要像这样在viewDidLoad():方法中注册您的笔尖对象

let nib = UINib(nibName: "CustomTableViewCell", bundle: nil)

tableView.register(nib, forCellReuseIdentifier: "Custom")

还,您是否在情节提要中设置了单元重用标识符?